匿名使用者
匿名使用者 發問時間: 電腦與網際網路程式設計 · 1 0 年前

請教個問題,願意回答者請進~ 謝謝!!

/* 求最大公因數和最小公倍數 */

#include <stdio.h>

#include <stdlib.h>

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 ,這....這是?

已更新項目:

這個程式是在網路上找到的,對於它的這一部份

while (c=a%b)

{

a=b;

b=c;

}

我實在看不懂是代表什麼意思?

為什麼這樣就能求出最大公因數和最小公倍數?

此程式可以執行喔....

3 個解答

評分
  • chan
    Lv 5
    1 0 年前
    最佳解答

    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,以及最小公倍數:乘積除以最大公因數。

  • Lv 7
    1 0 年前

    你是想問為何程式是如何執行還是這程式用的公式是怎麼來的?

  • 1 0 年前

    while (c=a%b)

    {

    a=b;

    b=c;

    }

    ////////////////////////////

    請問c是什麼,從程式一開始就沒有說

    c是什麼,那這個while迴圈,我想應該

    不會跑吧!

    2006-07-27 00:44:51 補充:

    如果while中的判斷式不能跑的話

    那麼 a=b; b=c; 不就無意義了嗎?

還有問題?馬上發問,尋求解答。