【經典100題】 題目16 求兩個數的最大公約數和最小公倍數
阿新 • • 發佈:2018-12-22
題目
求兩個數的最大公約數和最小公倍數。
最大公約數:指兩個或多個整數共有約數中最大的一個
最小公倍數:指兩個或多個整數共有倍數中最小的一個
說明:自己沒有搞清楚最大公約數和最小公倍數的定義,結果走了不少彎路,下面的解法是一種比較簡單但是效率的不高的解法。可以參考“輾除法”,在後續會學習一下。
C語言實現
#include<stdio.h> void zuidagongyinshu(int x, int y); void zuixiaogongbeishu(int x, int y); void main() { int a, b; printf("請輸入正整數a:"); scanf("%d", &a); printf("請輸入正整數b:"); scanf("%d", &b); zuidagongyinshu(a, b); zuixiaogongbeishu(a, b); } void zuidagongyinshu(int x, int y) { //找出最小的數 int small; if (x > y) small = y; else small = x; while (small!=0) { if (x%small == 0 && y%small == 0) { printf("最大公因數是:%d\n", small); break; } small--; } } void zuixiaogongbeishu(int x, int y) { //找出最大的數 int big; if (x < y) big = y; else big = x; while (1) { if (big%x == 0 && big%y == 0) { printf("最小公倍數是:%d\n", big); break; } big++; } }
執行結果:
請輸入正整數a:270
請輸入正整數b:36
最大公因數是:18
最小公倍數是:540
請按任意鍵繼續. . .
python實現
#最大公因數 def zuidagongyinshu(x, y): #找出最小的數 if x > y: small = y else: small = x while small !=0: if x%small == 0 and y%small == 0: print("最大公因數%d"%small ) break small -=1 #最小公倍數 def zuixiaogongbeishu(x,y): #找出最大的數 if x > y: big = x else: big = y while(1): if big%x == 0 and big%y == 0: print("最小公倍數:%d"%big) break big+=1 #主程式 a =int(input("請輸入正整數a:")) b =int(input("請輸入正整數b:")) zuidagongyinshu(a, b) zuixiaogongbeishu(a,b)
執行結果:
請輸入正整數a:36
請輸入正整數b:270
最大公因數18
最小公倍數:540
★ finished by songpl,2018.12.13