Yahoo 知識+ 將於 2021 年 5 月 4 日 (美國東岸時間) 停止服務,而 Yahoo 知識+ 網站現已轉為僅限瀏覽模式。其他 Yahoo 資產或服務,或你的 Yahoo 帳戶將不會有任何變更。你可以在此服務中心網頁進一步了解 Yahoo 知識+ 停止服務的事宜,以及了解如何下載你的資料。

Lv 5
發問於 電腦與網際網路程式設計 · 1 十年前

求完美數的C程式

所謂的完美數

就是一個數恰好等於它的因數(小於本身)和

如6的因數有1、2、3(6不算)

而1+2+3洽=6

因此6是完美數

求1000以內所以的完美數的C程式

-----------------------------------------------

#include<stdio.h>

#include<stdlib.h>

int main(void)

{

int i,n,sum=0;

printf("1到1000中所有的完美數有: ");

for(n=2;n<=1000;n++)

{

for(i=1;i<=n-1;i++)

{

if(n%i==0)

sum+=a;

}

if(n=sum)

printf("%d ",n);

}

printf("\n");

system("pause");

return 0;

}

執行後卻發現無法求得完美數

請問各位前輩小弟的程式碼哪裡有問題呢?

拜託了~

2 個解答

評分
  • ?
    Lv 7
    1 十年前
    最愛解答

    其實,你的程式有地方可以改進. 請看黃線:

    #include

    #include

    int main(void)

    {

    int i,n,sum=0;

    printf("1到1000中所有的完美數有: ");

    for(n=2;n<=1000;n++)

    {

    for(i=1;i<=n-1;i++) //改成 for(i=2, sum=1; i<=(sqrt(1+n)) && (sum <= n); ++i)

    {

    if(n%i==0)

    sum+=a; // change to sum += i; if(i*i != n) sum += (n%i);

    }

    if(n=sum) // change to if(n == sum)

    printf("%d ",n);

    }

    printf("\n");

    system("pause");

    return 0;

    }

    2010-08-09 19:15:05 補充:

    // change to { sum += i; if(i*i != n) sum += (n%i); }

    sorry!

  • 1 十年前

    if(n=sum)

    判斷是寫錯, 應該有兩個等號才對 if(n==sum)

    資料來源:
還有問題嗎?立即提問即可得到解答。