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的最大公約數,都是正整數!演算法...