c语言求2到1000内的所有完数【在线求各位赐教】

2024-12-12 06:37:51
推荐回答(5个)
回答1:

#include
int main()
{ int a,i,i1,sum=0;
scanf("%d",&a);//输入一个计算的范围数据
for(i=1;i<=a;i++)//范围数据累加循环
{
for(i1=1;i1 {
if(i%i1==0)//mod余为0
{
sum=sum+i1;//累加结果
}

}
if(sum==i)//判断是否是完全数
{
printf("%d 是完全数,分别由",sum);//输出
for(i1=1;i1 {
if(sum%i1==0)
printf(" %d",i1);
}
printf(" 这些数组成\n");

}
sum=0;
}
return 0 ;
}

//=============以下是根据你的源码改动一了下,对比一下就知道哪错了============
/*
#include 
void main () 
{
int a,b,s=0;
for(a=2;a<=1000;a++) 
{
for(b=1;b {
if(a%b==0)
s=s+b;
}
if(s==a) 
printf("%d\n",s);
s=0;//这里s必须置0,否则再次循环,s初始值就是上次的值。
}
return 0;
}
*/

回答2:

#include
main()
{
int i; int is(int n); /*is()函数的作用是判断n是否为完数*/
for(i=2; i<=1000; i++)
if(is(i)) /*返回真值为完数,输出它*/
printf("%d ",i);
}
int is(int n)
{
int i,sum;
sum=0;
for(i=1;i<=n/2;i++) /*这里n/2的意思是一个数的最大因子不超过它的一半大,没有必要做无谓的运算*/
if(!(n%i)) /*如果n%i等于0(就是说i为n的因子),对其求和*/
sum=sum+i;
if(sum==n)return 1; /*如果其所以因子之和等于其本身,返回真值*/
else return 0;
}

code::blocks已成功编译运行

回答3:

main()
{
  int i,j,sum;
  for(i=2;i<1000;i++)
  {
  sum=0;
  for(j=1;j<=i/2;j++)
  {
if(i%j==0)
   sum=sum+j;
}
  if(sum==i)
  printf("%4d",i);
  }
}

回答4:

#include
#define M 1000

void main () {
int i,j,sum;
for(i = 2;i < M;i++) {
sum = 0;
for(j = 1;j < i;j++)
if(i % j == 0)
sum += j;
if(sum == i) printf("%d ",sum);
}
printf("\n");
}

回答5:

以上都不对!!!