回覆列表
-
1 # ntkhn449
-
2 # 使用者3417633067606
#include
void main()
{int i,j,s,n;
scanf("%d",&n);
for(i=2;i
{
s=1;
for(j=2;j
if(i%j==0)s+=j;
if(s==i)
printf("%8d",i);
}
printf("\n");
getch();
return 0;
}
C語言實現如下:#include<stdio.h>void main(){int i,j,k,n;scanf("%d",&n); //輸入一個正整數nfor(i=2;i<=n;i++){k=0;for(j=1;j<=i-1;j++)if(i%j==0) k+=j;if(k==i) printf("%d\n",i);//判斷i的所有真因子之和是否等於i,是則輸出i。}}注意:建議n的取值小於10000,否則程式執行的時間將比較長。知識擴充套件:完數,一般指完全數,一個自然數如果它的所有真因子(即除了自身以外的約數)的和等於該數,那麼這個數就是完全數,如:6的真因子有1、2、3,6=1+2+3,所以6是一個完全數。