| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2748 人关注过本帖
标题:一个数如果恰好等于它的因子之和,这个数就称为"完数"。 例如,6的因子为1、 ...
只看楼主 加入收藏
南方姑娘
Rank: 1
等 级:新手上路
帖 子:21
专家分:5
注 册:2013-8-14
结帖率:37.5%
收藏
已结贴  问题点数:10 回复次数:5 
一个数如果恰好等于它的因子之和,这个数就称为"完数"。 例如,6的因子为1、2、3,而6=1+2+3,因此6是"完数"。
#include<stdio.h>
int main()
{
    int N,i,j,s;
    scanf("%d",&N);
    for(i=1;i<=N;i++)
    {
        s=0;
        for(j=1;j<i;j++)
        {
            if(i%j==0)
            {
                s=s+j;
            }
        }
        if(s==i)
        {
            printf("%d its fastors are %d\n",i,j);
        }
    }
    return 0;
}
怎么改进代码才能使每个因数都输出,如下
6 its fastors are 1 2 3
28 its fastors are 1 2 4 7 14
496 its fastors are 1 2 4 8 16 31 62 124 248
这是个完数题
2013-08-14 22:52
pauljames
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:千里冰封
威 望:9
帖 子:1555
专家分:10000
注 册:2011-5-8
收藏
得分:10 
#include<stdio.h>
int main()
{
    int N,i,j,s;
    int fac[10],k=0;
    scanf("%d",&N);
    for(i=1;i<=N;i++)
    {
        s=0;
        for(j=1;j<i;j++)
        {
            if(i%j==0)
            {
                s=s+j;
                fac[k]=j;
                k++;
            }
        }
        if(s==i)
        {
            printf("%d its fastors are:",i);
            for(k--;k>=0;k--)
                printf("%d ",fac[k]);
            printf("\n");
        }
        else
        {
            k=0;
        }
    }
    return 0;
}

30
6 its fastors are:3 2 1
28 its fastors are:14 7 4 2 1


经常不在线不能及时回复短消息,如有c/单片机/运动控制/数据采集等方面的项目难题可加qq1921826084。
2013-08-16 07:07
豆芽菜咿呀
Rank: 1
等 级:新手上路
帖 子:7
专家分:0
注 册:2013-6-15
收藏
得分:0 
领教了
2013-08-16 08:48
小小程序猿
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:1
帖 子:755
专家分:2785
注 册:2013-7-18
收藏
得分:0 
2楼似乎是正解

孤独与寂寞是催化一个人迅速成长的良药,没有之一
2013-08-16 09:15
QQ12369
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2017-7-19
收藏
得分:0 
回复 楼主 南方姑娘
#include<stdio.h>
int main()
{
    int n=0,i=0,sum;
    for(n=2;n<1000;n++){
        sum=0;
        for(i=1;i<n;i++){
            if(n%i==0){
                sum += i;
            }
        }
        if(sum == n){
            printf("%d its facotors are ",n);
            for(i=1;i<n;i++){
                if(n%i==0){
                    printf("%d ",i);
                }
            }
            printf("\n");
        }
    }
    return 0;
}
2017-07-19 16:33
QQ12369
Rank: 1
等 级:新手上路
帖 子:2
专家分:0
注 册:2017-7-19
收藏
得分:0 
回复 楼主 南方姑娘
#include<stdio.h>
int main()
{
    int n=0,i=0,sum;
    for(n=2;n<1000;n++){
        sum=0;
        for(i=1;i<n;i++){
            if(n%i==0){
                sum += i;
            }
        }
        if(sum == n){
            printf("%d its facotors are ",n);
            for(i=1;i<n;i++){
                if(n%i==0){
                    printf("%d ",i);
                }
            }
            printf("\n");
        }
    }
    return 0;
}
2017-07-19 16:33
快速回复:一个数如果恰好等于它的因子之和,这个数就称为"完数"。 例如,6的因子 ...
数据加载中...
 
   



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

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