輾轉相除求最大公約數

2021-08-20 04:45:43 字數 602 閱讀 3348

什麼叫輾轉相除法求最大公約數

輾轉相除法求兩個數的最大公約數的步驟如下:

先用大的乙個數除大的乙個數,得第乙個餘數;

再用兩個數中較小的乙個數除第乙個餘數,得第二個餘數;

又用第乙個餘數除第二個餘數,得第三個餘數;

這樣逐次用後乙個數去除前乙個餘數,直到餘數是0為止。那麼,最後乙個除數就是所求的最大公約數(如果最後的除數是1,那麼原來的兩個數是互質數)。

例如求1515和600的最大公約數,

第一次:用600取餘1515,商2餘315;

第二次:用315取餘600,商1餘285;

第三次:用285取餘315,商1餘30;

第四次:用30取餘285,商9餘15;

第五次:用15取餘30,商2餘0。

1515和600的最大公約數是15。

輾轉相除法是求兩個數的最大公約數的方法。如果求幾個數的最大公約數,可以先求兩個數的最大公約數,再求這個最大公約數與第三個數的最大公約數。這樣依次下去,直到最後乙個數為止。最後所得的乙個最大公約數,就是所求的幾個數的最大公約數。

void main()

while(c=a%b)

printf("最大公約數為:%d\n,b};

輾轉相除求最大公約數

限制 總時間限制 1000ms 記憶體限制 65536kb 描述 給定兩個正整數,求它們的最大公約數。輸入 輸入一行,包含兩個正整數 1,000,000,000 輸出 輸出乙個正整數,即這兩個正整數的最大公約數。樣例輸入 6 9樣例輸出 3提示 求最大公約數可以使用輾轉相除法 假設a b 0,那麼a...

輾轉相除法求最大公約數

之前總結過一次高德納taocp中的最大公約數求解,其實課後題中的演算法修改要求實現的是輾轉相除法求解最大公約數。這個題目我最初的理解理解錯了,自然也沒有做出標準答案。現在按照標準答案的解答寫一下相應的 實現 defmaxcommdivisor m,n while m n 0 m m n if m 0...

輾轉相除求最大公約數原理

首先看 如下,並不難,很多人都會寫。public static intf int a,int b return a 舉個例子,例如6,8按照 執行一遍。a b68 8662 20但是這個演算法的原理可是折磨了我很久,不知道大家懂不懂這個原理 兩個數的最大公約數是指能同時整除它們的最大正整數。設兩數為...