C语言输入n,判断n是不是完数

 我来答
My_Persistence
2017-06-22 · TA获得超过3467个赞
知道大有可为答主
回答量:1201
采纳率:81%
帮助的人:434万
展开全部
/*
**算法思路:一个数如果恰好等于它的因子之和,这个数就称为“完数”。
首先,求出这个数的所有因子,并将这些因子进行累加,如果该数的因子恰好等于该数本身,则该数是完数,否则不是。
*/
#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;
}

benben239
推荐于2017-09-02 · TA获得超过864个赞
知道小有建树答主
回答量:612
采纳率:100%
帮助的人:494万
展开全部
#include <stdio.h>
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;
}

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
夜礼服假面MP
2014-11-17 · TA获得超过3437个赞
知道大有可为答主
回答量:1034
采纳率:77%
帮助的人:360万
展开全部
#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);

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
栖凤婷
2014-11-17 · TA获得超过551个赞
知道小有建树答主
回答量:468
采纳率:0%
帮助的人:371万
展开全部
#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);
    }
    
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式