求最大公因數

2021-03-01 胡曉影的編程教室
    生活中(強行生活中),我們經常需要求兩數的最大公因數,最常見的應該是短除法,不過需要動手計算,很容易把手指累骨折,很麻煩,於是我們便想讓計算機幫我們代勞,那麼今天曉影就給大家說道說道。    一般求最大公因數我們有兩種方法;輾轉相除法和更相減損術   下面我們就分別來操作一下

輾轉相除法:

    這算法可不一般,是世界上已知最早的算法,歐幾裡得在公元前300多年提出的。

就是這位大佬

 

    它的具體做法是:用較大數除以較小數,再用出現的餘數(第一餘數)去除除數,再用出現的餘數(第二餘數)去除第一餘數,如此反覆,直到最後餘數是0為止。如果是求兩個數的最大公約數,那麼最後的除數就是這兩個數的最大公約數。

    可能聽著很懵對吧,我們用具體數據來試驗一下 

其中"a mod b"是指取 a ÷ b 的餘數。

例如,123456 和 7890 的最大公因數是 6,這可由下列步驟看出:

a

b

a mod b

123456

7890

5106

7890

5106

2784

5106

2784

2322

2784

2322

462

2322

462

12

462

12

6

12

6

0

    如果你還是很懵,沒關係,我們再看下圖

 

    這個過程本質是把一個複雜的問題轉化為更簡單的問題,所以我們可以用遞歸。貼出c語言的代碼:

( 看懵了吧

(我錯了,不敢得瑟了正常人能看懂的代碼獻上)


更相減損法:

    更相減損術是出自《九章算術》的一種求最大公因數的算法,它原本是為約分而設計的,但它適用於任何需要求最大公約數的場合。

    原文是這樣的:
        可半者半之,不可半者,副置分母、子之數,以少減多,更相減損,求其等也。以等數約之。

   

     什麼意思呢?具體步驟如下:

 第一步:任意給定兩個正整數;判斷它們是否都是偶數。若是,則用2約簡(這一步可以不做,只不過約簡後能使計算簡便); 若不是則執行第二步。

第二步:以較大的數減較小的數,接著把所得的差與較小的數比較,並以大                   數減小數。繼續這個操作,直到所得的減數和差相等為止。

則第一步中約掉的若干個2的積與第二步中等數的乘積就是所求的最大公約數。

 例:求24和6的最大公因數

        一.24和6都能用2約簡,得12和3

        二.12-3=9

        三.9-3=6

        四.6-3=3  (出現了)減數和差相等

        五.於是2*3=6就是12與6的最大公約數

    至於為什麼這樣算,其實本質上與輾轉相除法並沒有什麼區別,這裡就不再贅述了,下面直接給出C語言的原始碼:

最後,非常感謝您的支持,如果您有什麼疑問,非常歡迎您私信曉影或者在評論區留下您寶貴的意見或建議

附:原始碼(偷懶專用,可直接複製粘貼

輾轉相除法:

#include<stdio.h>

int main()

{

 int a,b;

 scanf("%d%d",&a,&b);

 if(a<=b)//讓a>b 

 {

  a=a+b;

  b=a-b;

  a=a-b;

  } 

 while(a%b!=0)

 {

  b=a%b;

  a=b; 

  } 

  printf("最大公因數是%d",b); 

 return 0;

 } 

更相減損術:

#include <stdio.h>

int main()

{

int a,b;

scanf("%d%d",&a,&b);

while(a != b)

{

if(b<a)a=a-b;

else b=b-a;  

 }

 printf("最大公因數為%d",a);

    return 0;

}

相關焦點

  • 公因數與最大公因數
  • 80和90的最大公因數 80和90的最大公因數是幾
    公因數是小學數學中非常重要的一個知識點,幾個數公有的因數叫這些數的公因數,最小公因數一般是1。你知道80和90的最大公因數是多少嗎?80和90的公因數分別有哪些呢?一起來了解一下吧!80和90的最大公因數是10。其中80=2x2x2x2x5,90=2x3x3x5,所以80和90的最大公因數是2x5=10。
  • 64和24的最大公因數 64和24的最大公因數有什麼
    最大公因數是小學重點掌握的知識,在初中數學學習中,也是很多重點知識點的學習根基,很多人不知道64和24的最大公因數是多少。下面就來看看64和24的最大公因數。通過對64和24的公因數計算得出,64等於2×2×2×2×2×2,24等於2×2×2×3,所以最大公因數就是2×2×2等於8,最小公倍數等於2×2×2×2×2×2×3=192。  計算最大公因數的方法有:  1、關係判斷法:兩個數互質時,它們的最大公因數就是這兩個數的乘積;兩個數成倍數關係時,它們的最大公因數就是其中較小的那個數。
  • 【五年級數學微課】用「短除法」求最大公因數
    要想分解質因數,我們經常要用到「短除法」。如上圖第二種方法。講完這部分知識,除了讓學生知道什麼是「質因數」,「分解質因數」,還可以藉助「短除法」來求兩個及兩個以上整數的最大公因數和最小公倍數。同學們一定要學會用短除法分解質因數,今天這節課,我們就是用短除法來求兩個數的最大公因數。
  • 20和36的最大公因數 20和36的最大公因數是多少
    最大公因數和最小公倍數,很多人都容易搞混,不知道該怎麼去計算。其實,只要明白它的定義,還是很簡單的。那這裡我們就以20和36為例吧,來算算20和36的最大公因數是多少吧!  20和36的最大公因數是多少  20和36的最大公因數是4。
  • 三個數如何求最大公因數和最小公倍數?
    很多同學對於兩個數求解最大公因數和最小公倍數是相當熟練了,那麼三個數如何求最大公因數和最小公倍數呢?我們今天通過一個例題,來學習一下三個數求解最大公因數和最小公倍數的方法。好了,直接看題吧(ω)hia例題:求12、14和42的最大公因數和最小公倍數。
  • 25和75的最大公因數 25和75的最大公因數是多少
    25和75的最大公因數是25。求25和75的最大公約數,先分解質因數,得25=5x5,75=5×5×3,25與75的全部公有的質因數是5、5,它們的積是5×5=25,所以,25和75的最大公約數就是25。
  • 五年級數學下冊,最大公因數的多種求法,有一種方法最簡便
    最大公因數是小朋友學習分數的約分最基礎的知識,能夠快速求出兩個數的最大公因數,是學習分數的最基本技能。一、因數、公因數和最大公因數。首先教要小朋友區分這三個概念之間的關係。二、如何求兩個數的最大公因數?我們常用的有三種方法:1.列舉法把兩個數的因數分別列出來,然後找出來他們共有的因素就是他們的公因數,其中最大的那一個就是他們的最大公因數。
  • 45和45的最大公因數和最小公倍數 45和45的最大公因數是多少
    說起小學數學,最大公因數和最小公倍數大概是大家印象比較深刻的了吧。那麼大家是否還記得最大公因數和最小公倍數的概念呢?45和45的最大公因數和最小公倍數是多少呢?讓我們一起來回顧一下吧。
  • 小學數學知識點每日推薦3:公因數與最大公因數
    如果一個整數同時是幾個整數的因數,稱這個整數為它們的「公因數」;公因數中最大的稱為最大公因數(最大公約數)。2.求最大公因數的方法方法一:質因數分解法全部共有的質因數(公有質因數)相乘的積就是這幾個數的最大公因數。
  • 每日一練:最大公因數與最小公倍數(一)
    因數與最小公倍數(一)   如果一個自然數a能被自然數b整除,那麼稱a為b的倍數,b為a的因數。在所有因數數中最大的一個公因數,稱為這若干個自然數的最大公因數。在所有公倍數中最小的一個公倍數,稱為這若干個自然數的最小公倍數。自然數a1,a2,…,an的最小公倍數通常用符號[a1,a2,…,an]表示,例如[8,12]=24,[6,9,15]=90。常用的求最大公約數和最小公倍數的方法是分解質因數法和短除法。
  • ...最大公因數和最小公倍數 13和91的最大公因數和最小公倍數是多少
    公倍數和公因數是數學的計算中非常重要的兩個概念,學好這兩個知識點對我們學好數學來說有很大的幫助。那麼13和91的最大公因數和最小公倍數是多少呢?13和91的最大公因數是13,最小公倍數是91。
  • 五下數學:短除法公式掌握,最大公因數、最小公倍數問題統統解決
    眼下,五年級的學生正在學習因數與倍數的有關知識,雖然基礎知識與概念掌握的還可以,但一到具體問題時卻又有些茫然。今天,老師就用短除法公式,帶你們玩轉求最大公因數、最小公倍數的有關問題。短除法求兩個數的最大公因數和最小公倍數時,從兩個數公有的最小質因數除起,一直除下去,直到除得的兩個商互質為止。然而,短除法並不只是求最大公因數和最小公倍數這麼簡單。
  • 五年級數學下冊:最小公倍數、最大公因數問題,易錯應用題型整理
    必備知識點如何求兩個數的最大公因數與最小公倍數求法:短除法 例如:求24和36的最大公因數和最小公倍數所以:(24,36)=12 [24,36]=72求公因數、公倍數易混淆的應用題型一個班的同學去春遊,去時12個人坐一個車剛好
  • 大數的最大公因數,課本裡學的短除法有難度,用輾轉相除法很容易
    求兩個數的最大公因數和最小公倍數,是小學五年級的內容,小學教材中,都是採用短除法來計算的。短除法計算最大公因數簡單明了,速度快。但是,對於一些比較大的數,如求8251和6105的最大公因數,我們就不太好找出它們公有的因數,用短除法時,就顯得力不從心了。
  • 如何求幾個數的最小公倍數和最大公因數
    【求最小公倍數的方法】:(1)用分解質因數的方法,把這兩個數公有的質因數和各自獨有的質因數相乘。(2)用短除法的形式求。(3)特殊情況:如果兩個數是互質數,那麼這兩個數的積就是它們的最小公倍數。如果兩個數中較大的數是較小的數的倍數,那麼較大的數就是這兩個數的最小公倍數。
  • 求最小公倍數和最大公因數的方法
    求最小公倍數和最大公因數是小學數學分數中通分和約分中的內容;首先,我們來複習一下它們的定義。最小公倍數:是指在兩個或兩個以上的自然數中,共有倍數的最小的數。最大公因數:也稱最大公約數,最大公因子。指兩個或兩個以上整數中共有約數的最大的數。
  • 短除法簡單明了地說明白最大公因數和最小公倍數的一道超難判斷題
    其實這個題目用我們計算「最大公因數」和「最小公倍數」的短除法來講授,學生很容易明白。先以兩個相同的數為例子用短除法來求「最大公因數」和「最小公倍數」。有了短除法,學生都知道,計算最大公因數隻用側面的數乘起來,而計算最小公倍數,要把側面和底下的數都乘起來。
  • 甲數是乙數的倍數,甲、乙兩數的最大公因數是()A.1;B.甲數
    題目甲數是乙數的倍數,甲、乙兩數的最大公因數是A.1 B.甲數 C.乙數 D.甲、乙兩數的積普通學生思路:我們知道:當兩數成倍數關係時,較小的數就是它們的最大公因數。這裡需要注意的是甲數是較大數,乙數是較小數。
  • 最大公因數、最小公倍數
    一、用短除法求幾個數的最大公因數 12和30     24和36     39和78           72和84            36和60       45和60        45和75   45和60        42、105和56        24、36和48         二、用短除法求幾個數的最小公倍數。