int main()
{
int x,i,sum=0;
scanf("%d",&x);
for(i=1;i<x;i++)
{
if(x%i==0)
sum+=i;
}
if(x==sum)
printf("%d its factors are",x);
else printf("%d is not",x);
for(i=1;i<x;i++)
{
if(x%i==0)
printf("%d",i);
}
return 0;
}
sum的初值应该是0,你一开始没有加任何i,sum应该是0;此外,你的完数判断应该在循环外
#include <stdio.h>
int main()
{
int x,i,sum=0;
int buff[1000];
int count=0;
scanf("%d",&x);
for(i=1;i<=x/2;i++)//能整除的最大数x/2
{
if(x%i==0)
{
sum+=i;
buff[count++]=i;//将数据保存在数组中
}
}
if(sum!=x)//判断是否为完数
{
printf("%d is not\n",x);
}
else
{
printf("%d its factors are ",x);
for(i=0;i<count-1;i++)
{
printf("%d,",buff[i]);
}
printf("%d\n",buff[i]);
}
}
/*
6 its factors are 1,2,3
28 its factors are 1,2,4,7,14
496 its factors are 1,2,4,8,16,31,62,124,248
8128 its factors are 1,2,4,8,16,32,64,127,254,508,1016,2032,4064
*/
#include<stdio.h>
int main()
{
int x = 0;
int i = 0;
int sum = 0;
scanf("%d", &x);
for (i = 1; i < x; i++)
{
if (x % i == 0)
{
sum += i;
}
}
if ( x == sum )
{
printf("%d its factors are ",x);
for (i = 1;i < x; i++)
{
if (x % i == 0)
printf("%d ", i);
}
}
else
{
printf("%d is not\n", x);
}
return 0;
}
初学者这样看会不会理解些,后面那个因子要持续输出的。