Yahoo 知識+ 將於 2021 年 5 月 4 日 (美國東岸時間) 停止服務,而 Yahoo 知識+ 網站現已轉為僅限瀏覽模式。其他 Yahoo 資產或服務,或你的 Yahoo 帳戶將不會有任何變更。你可以在此服務中心網頁進一步了解 Yahoo 知識+ 停止服務的事宜,以及了解如何下載你的資料。
求完美數的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 71 十年前最愛解答
其實,你的程式有地方可以改進. 請看黃線:
#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!