C语言:对一个整数,如果其所有因子(包括因子1在内)之和正好等于这个数,那么就称它为“完全数”

Python028

C语言:对一个整数,如果其所有因子(包括因子1在内)之和正好等于这个数,那么就称它为“完全数”,第1张

#include <stdio.h>

void main()

{

int input

int i=0

int sum=0

scanf("%d",&input)

for(i=1i<inputi++)

{

if (input%i==0)

{

sum+=i

}

}

if(sum>input)

{

printf("赢数\n")

}

if(sum<input)

{

printf("亏数\n")

}

if(sum==input)

{

printf("楼主你想定义这个是什么数就是什么数\n")

}

}

你看,这个是你想要的么??

%号的优先级 比== 高

把它改成if((n%i)==0)

还有scanf("%lf",&n)!=EOF,这句会出问题

scanf 返回值是 输入值的个数,EOF=-1

因为你在键盘输入EOF, 在windows下 貌似不能用键盘输入,貌似ctrl+D/Z 不行

#include<stdio.h>

#include<time.h>

int sum(int n)

{int s=0,i

 for(i=1i<=n/2i++)

   if(n%i==0)s+=i

 return s-n

}

int main ( )

{int i,a[1001]

 printf("亏数:\n")

 for(i=1i<1001i++)

 {a[i]=sum(i)

  if(a[i]<0)printf("%5d",i)

 }

 printf("\n盈数:\n")

 for(i=1i<1001i++)

   if(a[i]>0)printf("%5d",i)

 printf("\n完全数:\n")

 for(i=1i<1001i++)

   if(!a[i])printf("%5d",i)

 printf("\n花时:%.3f秒\n",clock()/1000.0)

 return 0

}