| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1051 人关注过本帖
标题:求完数的编程
只看楼主 加入收藏
谦逊小子
Rank: 2
等 级:论坛游民
帖 子:20
专家分:44
注 册:2014-10-10
结帖率:75%
收藏
已结贴  问题点数:10 回复次数:5 
求完数的编程
int main()
{int i,j,h;
    double sum=0;/*定义一个标和的变量,*/
    for (i=1;i<=1000;i++)/*通过for循环求一到一千内的完数*/
    {for(j=1;j<i;j++)/*想通过j来控制sum求其和*/
        {if(i%j==0)sum+=j;if(j==i-1&&sum==i){
            printf("%d its factors are :",i);
            for(h=1;h<i;h++){if(i%h==0)printf("%d,",h);}
        }}}}为啥这个求不出完数来。求指点
搜索更多相关主题的帖子: double 
2014-10-12 12:54
erty1001
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:4
帖 子:331
专家分:1433
注 册:2014-8-31
收藏
得分:5 
简单说说:
老问题了,double虽然能够表示一个比较大的数字,但是这个数字是有精度的。
另外就是double和int型的不能比较==  它们俩被计算机识别成能够相等的概率很低
2014-10-12 16:12
谦逊小子
Rank: 2
等 级:论坛游民
帖 子:20
专家分:44
注 册:2014-10-10
收藏
得分:0 
学长,如果把int形改为double形不是会出现错误,求余不是要上下都得整数吗
2014-10-12 22:24
谦逊小子
Rank: 2
等 级:论坛游民
帖 子:20
专家分:44
注 册:2014-10-10
收藏
得分:0 
求学长能不能把这个改过来。
2014-10-12 22:26
穿梭的粒子
Rank: 2
等 级:论坛游民
帖 子:10
专家分:50
注 册:2014-10-12
收藏
得分:5 
你的代码这里错了 if(j==i-1&&sum==i)  这句在你代码里永远无法成立,后面的结果,当然显示不出来了。
建议 你看一下完数的概念,然后,想想自己的算法,重点检查你写的循环嵌套结构。

#include<stdio.h>
int main()
{
    int i,j,sum;
    for(j=1;j<=1000;++j)
    {
        for(i=1,sum=0;i<j;++i)
        {
            if(j%i==0)
                sum+=i;
        }
        if(sum==j)
            printf("%d\t",j);
    }
}

[ 本帖最后由 穿梭的粒子 于 2014-10-13 08:33 编辑 ]
2014-10-13 08:17
谦逊小子
Rank: 2
等 级:论坛游民
帖 子:20
专家分:44
注 册:2014-10-10
收藏
得分:0 
嗯,谢谢。我再看一下。
2014-10-13 11:26
快速回复:求完数的编程
数据加载中...
 
   



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

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