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的因數就是本身阿
/* 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 51 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的情況
至於如何讓程式運算速度變快
就自己去研究研究吧
參考資料: 自己