C语言输入n,判断n是不是完数
4个回答
展开全部
/*
**算法思路:一个数如果恰好等于它的因子之和,这个数就称为“完数”。
首先,求出这个数的所有因子,并将这些因子进行累加,如果该数的因子恰好等于该数本身,则该数是完数,否则不是。
*/
#include <stdio.h>
//判断是否为完数的函数
int isWanshu(int x)
{
int i,sum=0;
for(i=1;i<x;i++)
if(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<stdio.h>
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<x;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<x;i++)
{
if (x%i=0) printf("+%d",i);
}
printf("\n");
}
else
printf("%d不是完数!",x);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
#include <stdio.h>
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<nData;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);
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |