下列常用演算法中,適合計算最大公約數的演算法是

2021-03-03 21:11:08 字數 2070 閱讀 6985

1樓:匿名使用者

計算最大公約數的演算法是歐幾里得演算法。也就是我們知道的輾轉相除法。

現在開始排除法看你這道題目。窮舉法,可以用,不過不是歐幾里得演算法。查詢法,和窮舉法也差不多了。排序法,歐幾里得演算法只要比個大小,大除以小,所以也算不上排序。

因此答案應該是迭代法。雖然和程式語言中的迭代不完全一樣,不過這種反覆計算確實是迭代。答案是c。

c語言程式設計如何求最大公約數?

2樓:蘇

具體操作步驟如下:

一、新建一個c語言源程式,使用visual c++6.0的軟體。

二、從鍵盤中輸入兩個正整數a和

三、取兩個數a,b中的較小值存放到變數n中。**:int n=a;if (n>b)n=b。

四、從兩個數a和b中的較小數開始逐個減小1,尋找能整除a和b的整數。第一個找到的整數即整數a和b的最大公約數。

五、點選工具欄的如圖圖示,對源程式編譯執行。

六、測試輸入4,6,得到最大公約數2。程式是正確的,以測試更多的數。

七、上面面步驟是程式設計的思路,給出完整**,方便複製使用。#includevoid main()}}。

3樓:河蟹蛇薈

最大公約數演算法:

(1)輾轉相除法

兩整數a和b:

① a%b得餘數c

② 若c=0,則b即為兩數的最大公約數,結束③ 若c≠0,則a=b,b=c,再回去執行①(2)相減法

兩整數a和b:

① 若a>b,則a=a-b

② 若a③ 若a=b,則a(或b)即為兩數的最大公約數,結束④ 若a≠b,則再回去執行①

(3)窮舉法:

① i= a b中的小數

② 若a,b能同時被i整除,則i即為最大公約數,結束③ i--,再回去執行②

c語言程式設計:輸入兩個正整數m和n,求它們的最大公約數。

4樓:木澂

**及註釋如下:

#include

int ***(int a,int b)//定義函式,用來計算最大公約數

int main()

5樓:超級

#include

void main()

c = a % b;

}printf("最大公約數:%d", b);

} // 輸入 20 60;輸出 20

6樓:註冊註冊冊

main()

a=num1,b=num2;

while(b!=0)/*輾轉取餘演算法*/printf("它們的最大公約數為:%d\n",a);

printf("它們的最小公倍數為:%d\n",num1*num2/a);/*兩數相乘除最大公約數就是最小公倍數*/}

7樓:匿名使用者

比較簡單的做法

#include "stdio.h"

void main()

8樓:匿名使用者

//這種方法更簡單,演算法上執行效率更高,本人試過inline int ***(int m,int n){while(m!=n)

{if(m>n) m-=n;

if(m函式就ok了

9樓:四方袁走

#include

int main()

return 0;}

用偽**表示歐幾里得求最大公約數的演算法

10樓:弈軒

求最大公約數常用"輾轉相除法"

如求m和n的最大公約數,都是正整數!

演算法如下:

1.若m餘數

3.1若r為0(餘數為0),則n為所求,結束!

3.2否則令m=n, n=r,重複步驟2。

簡單地說,就是兩個數大者÷小者取餘數,若餘數為零,則小者為所求;否則大者變小者,小者變餘數,如此反覆。

最大公約數的規律

網上有的,查一下就知道了 在特殊情況下求最大公因數,最小公倍數的幾條規律.最小公倍數 可以使用整除法。一直除到兩個數互質,那麼所有除數的乘積即最大公約數而最小公倍數則是所有的因子,商相乘 例如64,40 2 64 40 除以2,2 32 20 商32,20 2 16 10 繼續除以2,商16,10 ...

求36963與59570的最大公約數

通過觀察容易發現,36963有約數3 3。而59570沒有質數3。59570有質因數2和5,而36963沒有質因數2和5。所以可以從36963中分解出3 3,從59570中分解出2 5,再求其餘部分的最大公約數。36963 3 3 4107 59570 2 5 5957 輾轉相除法 用大數除以小數再...

C語言用歐幾里得演算法定義的求最大公約數的函式沒看懂,哪位大神

if x換,使得x是兩數中最大值,y是最小值 while y 0 演算法核心,首先用x模y,取得餘數,然後每次用除數模餘數,直到整除為止 關於擴充套件歐幾里得演算法有點不明白,請大神指教 用偽 表示歐幾里得求最大公約數的演算法 求最大公約數常用 輾轉相除法 如求m和n的最大公約數,都是正整數!演算法...