|
//好記性不如爛筆頭,把腦子里想的落實到字面上來,有助于邏輯的推進
//這個程序難在輸出因子那里,一次性全部因子搞出來
//find perfect number
//首先求出一個數的所有因子
//有for(i=1;i<=1000;i++)
//有if(i==(.+.+.+....))
//是因子就得被整除
//可以先降低難度只判斷某個數是不是完數
//首先判斷是不是因子,如果是就累加,接下來就是見證奇跡的時刻
#include<stdio.h>
void main()
{
//首先得輸入一個整數吧,然后還有因子的和
int i,sum=0,j;
//printf("please input an integer:\n");
// scanf("%d",&i);
//從1開始判斷,用j當做待判斷數
for(i=1;i<=1000;i++)
{
for(j=1;j<i;j++)
{
if(i%j==0)
sum=sum+j;
}
if(i==sum)
{ printf("%d its facters are ",i);
//我的想法是到這里以后既然i是完數了,那么現在再來一次,把他的因子列出來不就行了
for(j=1;j<i;j++)
{
if(i%j==0)
printf("%d,",j);
}
printf("\n");
}
sum=0;//這個累加數在循環后要清零,這個很常用
}
//判斷的任務完成后就是for(i=1;i<=1000;i++)
}
//這是一個既循環又判斷的程序
|
|