/*
**算法思路:一个数如果恰好等于它的因子之和,这个数就称为“完数”。
首先,求出这个数的所有因子,并将这些因子进行累加,如果该数的因子恰好等于该数本身,则该数是完数,否则不是。
*/
#include
//判断是否为完数的函数
int isWanshu(int x)
{
int i,sum=0;
for(i=1;iif(x%i == 0) //判断i是否是x的因子
sum+=i; //如果是,则将该因子累加
if(sum == x) //如果因子的累加和恰好等于x,则返回1,否则返回0
return 1;
else
return 0;
}
int main()
{
int n;
scanf("%d",&n);
if(isWanshu(n)) //调用函数isWanshu(),如果函数返回值为真,则n是完数,否则不是
printf("%d is a perfect number\n",n);
else
printf("%d is not a perfect number\n",n);
return 0;
}
#include
int main(void)
{
int n, sum, i;
while (scanf("%d", &n) == 1) // 输入字母结束循环
{
for (i = 1, sum = 0; i < n; ++i)
{
if (n % i == 0)
sum += i;
}
if (sum == n)
puts("YES");
else
puts("NO");
}
return 0;
}
#include
void iswanshu(int x);
void main()
{
int a;
printf("判断是否是完数:\n请输入一个整数:");
scanf("%d",&a);
iswanshu(a);//调用下面的函数
}
//定义一个判断是否是完数的函数
void iswanshu(int x)
{
int i,k;
for(i=1;i{
if (x%i=0) k=k+i;//如果被判断的那个数整除i余数为0则累加到k
}
//如果k等于x那输出的数就是完数
if(k=x)
{
printf("%d是完数\n",x);
printf("%d=1",x);
for(i=2;i{
if (x%i=0) printf("+%d",i);
}
printf("\n");
}
else
printf("%d不是完数!",x);
}
#include
int IsData(int Data);
int IsData(int nData)
{
if(n<6) return 0;
int temp,sum;//X表示要判断的数,temp表示数的因子,sum表示因子之和.
sum= 0;
for(temp=1;temp{
//判断x能否被temp整除,如果可以,则是因子,进行求和
if(x%temp==0)
{
sum= sum+temp;
}
}
if(sum==nData) return 1;
else return 0;
}
int main()
{
int n;
scanf("%d",&n);
if(IsData(n)==1)
{
printf("%d是完数\n",n);
}
else
{
printf("%d不是完数\n",n);
}
}