| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 7799 人关注过本帖
标题:一个数如果恰好等于它的因子之和,这个数就称为“完数”。
只看楼主 加入收藏
lf1010849299
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2016-11-15
结帖率:75%
收藏
已结贴  问题点数:10 回复次数:7 
一个数如果恰好等于它的因子之和,这个数就称为“完数”。
麻烦看一下我的代码哪里错了,为什么没有输出
#include <stdio.h>
int main()
{int N,a=0,i,j;
    scanf("%d",&N);
    for(i=N;i>=1;i--)
        for(j<i;j>=1;j--)
        {if(i%j==0)
            a+=j;
            if(a==i)
            {printf("%d its factors are ");
                for(j<a;j>=1;j--)
                    if(a%j==0)
                        printf("%5d",j);
            }
        }
    return (0);
}
搜索更多相关主题的帖子: factors include return 
2016-11-20 13:29
linlulu001
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:20
帖 子:944
专家分:4047
注 册:2016-4-13
收藏
得分:7 
以下是引用lf1010849299在2016-11-20 13:29:09的发言:

麻烦看一下我的代码哪里错了,为什么没有输出
#include <stdio.h>
int main()
{int N,a=0,i,j;
    scanf("%d",&N);
    for(i=N;i>=1;i--)
        for(j<i;j>=1;j--)            //j<i????
        {if(i%j==0)
            a+=j;
            if(a==i)
            {printf("%d its factors are ");        //%d没有对应的参数
                for(j<a;j>=1;j--)
                    if(a%j==0)
                        printf("%5d",j);
            }
        }
    return (0);
}

2016-11-20 13:54
lf1010849299
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2016-11-15
收藏
得分:0 
回复 2楼 linlulu001
不能用j<i这种写法么
2016-11-20 13:59
lf1010849299
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2016-11-15
收藏
得分:0 
回复 2楼 linlulu001
#include <stdio.h>
我改成这样还是不行。。。
int main()
{int N,a=0,i,j;
    scanf("%d",&N);
    for(i=N;i>=1;i--)
        for(j>1;j<=i;j++)
        {if(i%j==0)
            a+=j;
            if(a==i)
            {printf("%d its factors are ",i);
                for(j<a;j>=1;j--)
                    if(a%j==0)
                        printf("%5d",j);
            }
        }
    return (0);
}
2016-11-20 14:04
linlulu001
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:20
帖 子:944
专家分:4047
注 册:2016-4-13
收藏
得分:0 
j是未知道值,而j和i的比较是逻辑运算,它的返回值是0或者1,但是j还是未知。
所在,你要做的是给j赋值。
#include <stdio.h>
int main()
{int N,a=0,i,j,fl=0;
    scanf("%d",&N);
    for(i=N;i>=1;i--)
    {
        a=0;
        for(j=i-1;j>=1;j--)
            if(i%j==0) a+=j;
           if(a==i)
         {
                ++fl;
                printf("\n%d its factors are ",i);
                for(j=i-1;j>=1;j--)
                    if(a%j==0)  printf("%5d",j);
        }
     }
    if(!fl) printf("unsolvable\n");
    return (0);
}
你代码基础上给改的。

[此贴子已经被作者于2016-11-20 14:19编辑过]

2016-11-20 14:10
lf1010849299
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2016-11-15
收藏
得分:0 
回复 5楼 linlulu001
可以了!!大神
#include <stdio.h>
int main()
{int N,a=0,i,j,fl=0;
    scanf("%d",&N);
    for(i=N;i>=1;i--)
    {
        a=0;   /为什么这边还要a=0。/
        for(j=i-1;j>=1;j--)
            if(i%j==0) a+=j;
           if(a==i)
         {
                ++fl;
                printf("\n%d its factors are ",i);
                for(j=i-1;j>=1;j--)
                    if(a%j==0)  printf("%5d",j);
        }
     }
    if(!fl) printf("unsolvable\n");/这行有什么意义么,可以举个例子么/
    return (0);
}
2016-11-20 14:35
lf1010849299
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2016-11-15
收藏
得分:0 
回复 5楼 linlulu001
我发现我多了下面画横线的一对括号输出就变得好多是为什么,求大神指教。
#include <stdio.h>
int main()
{int N,a=0,i,j;
    scanf("%d",&N);
    for(i=N;i>=1;i--)
    {a=0;
        for(j=i-1;j>=1;j--)
        {if(i%j==0)
            a+=j;
            if(a==i)
            {printf("\n%d its factors are ",i);
                for(j=i-1;j>=1;j--)
                    if(a%j==0)
                        printf("%5d",j);
            }
        }
    }
    return (0);
}
2016-11-20 15:10
炎天
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:桃花岛
等 级:贵宾
威 望:29
帖 子:1218
专家分:4986
注 册:2016-9-15
收藏
得分:3 
不加大括号,if(a==i)不属于第二个for循环, 可以输出j的值看看

早知做人那么辛苦!  当初不应该下凡
2016-11-20 15:43
快速回复:一个数如果恰好等于它的因子之和,这个数就称为“完数”。
数据加载中...
 
   



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

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