标题:一个数恰好等于因子之和为完数。如6的因子是1,2,3而6=1+2+3,所以6是完数 ...
只看楼主
小獠牙
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2017-10-15
结帖率:66.67%
已结贴  问题点数:10 回复次数:3 
一个数恰好等于因子之和为完数。如6的因子是1,2,3而6=1+2+3,所以6是完数。求1000以内的所有完数
#include "stdafx.h"


int _tmain(int argc, _TCHAR* argv[])
{int n=1;
for(n;n<=1000;n++);
{&nbsp;&nbsp;&nbsp;int i=1,f1=0,f2=0;
&nbsp;&nbsp;&nbsp; for(i;i<=n;i++);
&nbsp;&nbsp;&nbsp; {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(n%i==0)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f1=i;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f2=f2+f1;
&nbsp;&nbsp;&nbsp; }
&nbsp;&nbsp;&nbsp; while(n=f2)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("%d its factors are",n);
&nbsp;&nbsp;&nbsp; for(i;i<=n;i++);
&nbsp;&nbsp;&nbsp; {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(n%i==0)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("%d",i);
&nbsp;&nbsp;&nbsp; }
}
&nbsp;&nbsp;&nbsp; return 0;
}
搜索更多相关主题的帖子: 一个数 之和 完数 int for 
2017-11-24 19:26
小獠牙
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2017-10-15
得分:0 
#include "stdafx.h"


int _tmain(int argc, _TCHAR* argv[])
{int n=1;
for(n;n<=1000;n++);
{&nbsp;&nbsp;&nbsp;int i=1,f1=0,f2=0;
&nbsp;&nbsp;&nbsp; for(i;i<=n;i++);
&nbsp;&nbsp;&nbsp; {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(n%i==0)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f1=i;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;f2=f2+f1;
&nbsp;&nbsp;&nbsp; }
&nbsp;&nbsp;&nbsp; while(n=f2)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("%d its factors are",n);
&nbsp;&nbsp;&nbsp; for(i;i<=n;i++);
&nbsp;&nbsp;&nbsp; {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(n%i==0)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf("%d",i);
&nbsp;&nbsp;&nbsp; }
}
&nbsp;&nbsp;&nbsp; return 0;
}
2017-11-24 19:28
小獠牙
Rank: 1
等 级:新手上路
帖 子:26
专家分:0
注 册:2017-10-15
得分:0 
#include "stdafx.h"


int _tmain(int argc, _TCHAR* argv[])
{int n=1;
for(n;n<=1000;n++);
{int i=1,f1=0,f2=0;
for(i;i<=n;i++);
{
if(n%i==0)
f1=i;
f2=f2+f1;
}
while(n=f2)
printf("%d its factors are",n);
for(i;i<=n;i++);
{
if(n%i==0)
printf("%d",i);
}
}
return 0;
}
2017-11-24 19:30
炎天
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:桃花岛
等 级:贵宾
威 望:29
帖 子:1218
专家分:4986
注 册:2016-9-15
得分:10 
1. while(n==f2)这里是两个等号,  while(表达式){    }; 若表达式为真,则大括号的内容会一直执行(若大括号中有判断退出的条件才会退出),不是执行一次!
2. for(i==1; i<=n; i++)  你要这样写, 不要只写一个 i  , 语义不清楚,
3. 完数不包括本身,  所以 for(i; i<=n; i++)  改为  for(i; i<n; i++)
4. 一共两个for( )循环, i一直自加, 若第一个for() 循环结束后 i=5,  那么第二个for循环开始, i的值就是5不是 1。 你要给i重新赋值一下。
程序代码:
#include<stdio.h>

int main()
{
    int n = 1;
    for (n=1; n <= 1000; n++)
    {
        int i = 1, f1 = 0, f2 = 0;
        for (i=1; i < n; i++)
        {
            if (n%i == 0)
            {
                f1 = i;
                f2 = f2 + f1;
            }
        }
        
        if (n == f2) 
        {
            printf("%d\n", n);
            for (i=1; i < n; i++)
            {
                if (n%i == 0)
                    printf("%d  ", i);
            }
            printf("\n");
        }
    }
    
    return 0;
}

如果还有下次, 贴代码用这个

早知做人那么辛苦!  当初不应该下凡
2017-11-24 21:27



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-482790-1-1.html




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

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