Yahoo奇摩知識+ 將於 2021 年 5 月 4 日 (美國東部時間) 終止服務。自 2021 年 4 月 20 日 (美國東部時間) 起,Yahoo奇摩知識+ 網站將會轉為唯讀模式。其他 Yahoo奇摩產品與服務或您的 Yahoo奇摩帳號都不會受影響。如需關於 Yahoo奇摩知識+ 停止服務以及下載您個人資料的資訊,請參閱說明網頁。

C語言完美數的問題

/* my_program.c */

#include <stdio.h>

#include <stdlib.h>

int main(void)

{

int a,b,temp=0;

for(a=1;a<=1000;a++)

{

for(b=1;b<=a;b++)

{

if(a%b==0)

temp+=b;

if(temp==a)

printf("1000以下的完美數%d\n",a);

}

}

system("pause");

return 0;

}

為什麼完美數只有1跟2..哪錯了

已更新項目:

那為什麼1是完美數? 1的因數就是本身阿

2 個已更新項目:

/* my_program.c */

#include

#include

int main(void)

{

int a,b,temp=0;

for(a=1;a<=1000;a++)

{ temp=0;

for(b=1;b

2 個解答

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

    如果只是單純想問哪裡錯了

    你沒有把temp的資料清空

    如此會造成temp比a還大

    而且完美數是計算真因數的總合

    並不包含本身

    我把流程給你看看

    a=1 b=1

    temp=1

    a=2 b=1

    temp=2

    a=2 b=2

    temp=4

    a=3 b=1

    temp=5

    後面就不用看了

    由於temp沒有清空

    所以累積下

    temp會大於a

    而且還把a=b的情況下加進去

    提示一下

    最小的完美數是6

    2010-09-18 19:33:24 補充:

    1不是喔

    第一個是6

    for裡面條件到b

    2010-09-18 19:34:22 補充:

    for裡面條件到b小於a

    即可免去b=a的情況

    至於如何讓程式運算速度變快

    就自己去研究研究吧

    參考資料: 自己
  • 告訴你更快的方法

    for改成從6開始跑就好啦XDD

    (拖走)

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