| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 808 人关注过本帖
标题:输出1000以内的完数,求优化
只看楼主 加入收藏
q0224100404
Rank: 2
等 级:论坛游民
帖 子:25
专家分:10
注 册:2015-11-24
结帖率:37.5%
收藏
 问题点数:0 回复次数:7 
输出1000以内的完数,求优化
#include<stdio.h>
void main() /*一个数如果恰好等于他的因子之和,这个数就被称为“完数”。列出1000以内的完数,并且按6 its factors are 1,2,3的格式输出因子*/
{
    int i,n,m,t;
    m=0;
    for(i=1;i<=1000;i++)
    {
        for(n=1;n<i;n++)
        {
            if(i%n==0)m=m+n;
        }
        if(i==m)
        {printf("%d its factors are ",i);
        for(t=1;t<i;t++)
        {if(i%t==0)printf("%d,",t);}
        printf("\b \n");
        }
        m=0;
    }
}
搜索更多相关主题的帖子: factors 
2015-11-26 18:43
NeQhk
Rank: 2
等 级:论坛游民
威 望:1
帖 子:164
专家分:85
注 册:2014-7-19
收藏
得分:0 
第二个循环没有必要从1到i了吧
一个完数n的最大因子最多就n/2。
2015-11-28 12:54
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:0 
如果A是N的因子,那N/A也是N的因子。所以循环到根号N就够了。

楼主之所以循环到I是为了顺序输出所有的因子,关于这个用类似二叉树遍历的递归输出可以很方便做到。

至于最后用一个退格符来掩盖最后的逗号也不好,它只是看起来没有而已。可以先输出第一个因子,之后以“,%d”的方式输出其它因子。

重剑无锋,大巧不工
2015-11-28 13:06
诗无言
Rank: 2
等 级:论坛游民
帖 子:20
专家分:45
注 册:2015-11-4
收藏
得分:0 
第一个for中,i=500;完数1000,根据最大约数,最大完数在500内。这样会优化很多
2015-11-29 15:54
诗无言
Rank: 2
等 级:论坛游民
帖 子:20
专家分:45
注 册:2015-11-4
收藏
得分:0 
第一个for,for(i=6;i<=500;i++),刚刚没说清楚
2015-11-29 16:05
ehszt
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:40
帖 子:1744
专家分:3216
注 册:2015-12-2
收藏
得分:0 
#include<stdio.h>
main()
{int i,j,k,l,sum=0;
int n[100];
printf("1 its factor is:1\n");
for(i=2;i<=1000;i++)
{
for(l=0;l<=100;l++)
n[l]=0;
k=0;
for(j=1;j<i;j++)
{if(i%j==0)
{n[k]=j;
k++;}
else continue;
}
for(l=0;l<k;l++)
sum=sum+n[l];
if(sum==i)
{printf("%d its factor are:",i);
for(l=0;l<k;l++)
printf("%d ",n[l]);
printf("\n");
}
else continue;
}
return 0;
}
2015-12-02 19:27
ehszt
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:40
帖 子:1744
专家分:3216
注 册:2015-12-2
收藏
得分:0 
实验了,绝对正确!
2015-12-02 19:27
法海无鞭
Rank: 1
等 级:新手上路
帖 子:6
专家分:1
注 册:2013-11-16
收藏
得分:0 
我看看就行了。
2015-12-03 08:48
快速回复:输出1000以内的完数,求优化
数据加载中...
 
   



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

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