/* 求最大公因數和最小公倍數 */
#include
#include
int main()
{
int a, b, c, d;
printf(\"請輸入一個整數 a :\");
scanf(\"%d\", &a);
printf(\"請輸入一個整數 b :\");
scanf(\"%d\", &b);
d=a*b;
while (c=a%b)
{
a=b;
b=c;
}
printf(\"最大公因數為 %d\\n最小公倍數為 %d\\n\", b, d/b);
system(\"PAUSE\");
return 0;
}
請問以下的這個部分是什麼意思啊?我實在看不懂....
while (c=a%b)
{
a=b;
b=c;
}
把 a 除於 b 的餘數給 c ,之後把 b 的數給 a ,又把 c 的數給 b ,這....這是?
2006-07-26 20:01:58 · 3 個解答 · 發問者 Anonymous in 電腦與網際網路 ➔ 程式設計
這個程式是在網路上找到的,對於它的這一部份
while (c=a%b)
{
a=b;
b=c;
}
我實在看不懂是代表什麼意思?
為什麼這樣就能求出最大公因數和最小公倍數?
此程式可以執行喔....
2006-07-26 20:52:13 · update #1
while (c=a%b){a=b;b=c;}printf("最大公因數為 %d\n最小公倍數為 %d\n", b, d/b);它會先做a%b的動作,也就是看a除以b的餘數是多少?做完後把餘數放到c。while判斷c是否為0,如果不是零,就會進入迴圈本體,a=b除數變為被除數,b=c餘數變為除數,再來做a%b也就是「輾轉相除法」。如果c是零時,就會跳到下面的printf印出最大公因數b,以及最小公倍數:乘積除以最大公因數。
2006-07-27 00:03:48 · answer #1 · answered by chan 5 · 0⤊ 0⤋
你是想問為何程式是如何執行還是這程式用的公式是怎麼來的?
2006-07-26 23:01:54 · answer #2 · answered by 龍 7 · 0⤊ 0⤋
while (c=a%b)
{
a=b;
b=c;
}
////////////////////////////
請問c是什麼,從程式一開始就沒有說
c是什麼,那這個while迴圈,我想應該
不會跑吧!
2006-07-27 00:44:51 補充:
如果while中的判斷式不能跑的話
那麼 a=b; b=c; 不就無意義了嗎?
2006-07-26 20:36:04 · answer #3 · answered by 微風 1 · 0⤊ 0⤋