請問如何使用遞迴寫出最小公倍數之程式 |
尚未結案
|
landochu
一般會員 發表:23 回覆:20 積分:8 註冊:2003-12-24 發送簡訊給我 |
|
qoo1234
版主 發表:256 回覆:1167 積分:659 註冊:2003-02-24 發送簡訊給我 |
#include #include using namespace std; int gcd(int a,int b) //最大公因數 { int temp; while(a%b!=0) { temp=a%b; a=b; b=temp; } return b; } int lcm(int a,int b) //最小公倍數 { return a*b/gcd(a,b); } int main(int argc, char *argv[]) { int a,b,c; cout << "本程式將求三數之最大公因數與最小公倍數\n"; cout << "請輸入三數:"; cin >> a >> b >> c; cout << a << "," << b << "," << c << "之最大公因數為" << gcd(gcd(a,b),c) << "\n"; cout << a << "," << b << "," << c << "之最小公倍數為" << lcm(lcm(a,b),c) << "\n"; system("PAUSE"); return 0; }網海無涯,唯學是岸! |
pkdemon
初階會員 發表:2 回覆:51 積分:25 註冊:2004-09-13 發送簡訊給我 |
|
qoo1234
版主 發表:256 回覆:1167 積分:659 註冊:2003-02-24 發送簡訊給我 |
|
landochu
一般會員 發表:23 回覆:20 積分:8 註冊:2003-12-24 發送簡訊給我 |
|
pkdemon
初階會員 發表:2 回覆:51 積分:25 註冊:2004-09-13 發送簡訊給我 |
|
pkdemon
初階會員 發表:2 回覆:51 積分:25 註冊:2004-09-13 發送簡訊給我 |
|
blk5743
高階會員 發表:34 回覆:371 積分:236 註冊:2003-11-17 發送簡訊給我 |
landochu你好,為什麼各位前輩會算最大公因數再來求最小公倍數
這個應該是因為上數學課就是這樣教的吧,而這應該是最有效率的方式 如果你要看起來很單純得方式,你可以仿照pkdemon的方式再做修改
例如求A,B兩數的最小公倍數(前提當然是正整數)
int LCM(A,B) { int X,Y,I; if ( A > B ) { for ( I = 1; I <= B; I ) { if (( B*I % A) == 0 )//於數為零,代表是倍數 return B*I; } } else { for ( I = 1; I <= A; I ) { if (( A*I % B) == 0 )//於數為零,代表是倍數 return A*I; } } }第二種方式應該比較直觀,但數字很大的話,先求最大公因數應該會比較有效率 |
landochu
一般會員 發表:23 回覆:20 積分:8 註冊:2003-12-24 發送簡訊給我 |
|
pkdemon
初階會員 發表:2 回覆:51 積分:25 註冊:2004-09-13 發送簡訊給我 |
|
WHEESUNG
一般會員 發表:1 回覆:3 積分:0 註冊:2005-10-03 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |