| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 612 人关注过本帖
标题:求2到1000间的完美数
只看楼主 加入收藏
小海狸
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2015-11-16
结帖率:0
收藏
已结贴  问题点数:6 回复次数:7 
求2到1000间的完美数
不知道该怎么改,网上查的方法都看不太懂,只会用if ,while, for之类的

#include <stdio.h>
int main()
{int m=2,k=1,sum=0;
while(m<1000)

    {while(m%k==0&&k<m)
        sum+=k;
    }
    k++;
    {if(m==sum)
    printf("%d\n",m);
    }

m++;
return 0;
}

我的思路是先用取余求出一个数的所有真因子,如果它们的和等于这个数本身,那它就是完美数
搜索更多相关主题的帖子: include 网上 
2015-11-16 21:02
imzaghi333
Rank: 2
来 自:江苏昆山
等 级:论坛游民
帖 子:34
专家分:61
注 册:2013-9-7
收藏
得分:2 
int perfect(int number)
{
    int j;
    int sum = 1;
    for(j = 2; j <= number/2; j++){
        if(number%j == 0){
            sum += j;
        }
    }
    if(number == sum){
        return number;
    }
    else{
        return 0;
    }
}

非专业的C语言爱好者.正在学习中..........
2015-11-16 21:43
ntprc0x
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:23
专家分:130
注 册:2015-11-14
收藏
得分:2 
程序代码:
#include <stdio.h>
int main()
{
    int m=2,k,sum;
    while(m<1000)
    {
        sum = 0;
        k = 1;
        while(k<=m/2)
        {
            if(m%k==0)
                sum+=k;
            k++;
        }
        if(m==sum)
            printf("%d\n",m);
        m++;
    }
    return 0;
}

2015-11-16 21:51
丁松
Rank: 2
来 自:重庆
等 级:论坛游民
威 望:1
帖 子:41
专家分:75
注 册:2015-11-11
收藏
得分:2 
#include <stdio.h>
void main()
{
    int m=2,k,sum;
    while(m<1000)
    {
        sum = 0;
        k = 1;
        while(k<=m/2)
        {
            if(m%k==0)
                sum+=k;
            k++;
        }
        if(m==sum)
            printf("%3d is a perfect number!\n",m);
        m++;
    }
}

[此贴子已经被作者于2015-11-16 22:34编辑过]

2015-11-16 22:17
小海狸
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2015-11-16
收藏
得分:0 
回复 3楼 ntprc0x
能讲一下原理么?
还有,我的错在哪里
谢谢!
2015-11-20 20:03
chenxd
Rank: 2
来 自:北京
等 级:论坛游民
帖 子:20
专家分:24
注 册:2015-5-19
收藏
得分:2 
楼主你的while循环结束的位置不对啊,m++这个都没包含进去;另外你的
{while(m%k==0&&k<m)
        sum+=k;
    }
    k++;
k++应该在这个while循环里的

不要嘲笑我家樱木!
2015-11-21 08:22
小海狸
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2015-11-16
收藏
得分:0 
回复 6楼 chenxd
2015-11-21 17:57
蒋沁伶
Rank: 1
等 级:新手上路
帖 子:4
专家分:2
注 册:2015-10-28
收藏
得分:2 
#include<stdio.h>
void main()
{
    int i,j,s;
for (i=1;i<=1000;i++)
{
    s=0;
   for(j=1;j<i;j++)
   if(i%j==0)
   s=s+j;
   if (s==i)
      {
       printf("\n%d ",i);
       }
}
}
2015-11-21 23:34
快速回复:求2到1000间的完美数
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027383 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved