| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1103 人关注过本帖
标题:一个数如果恰好等于它的因子之和,这个数就称为"完数"。 例如,6 的因子为 ...
只看楼主 加入收藏
u123456
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2014-6-28
收藏
 问题点数:0 回复次数:2 
一个数如果恰好等于它的因子之和,这个数就称为"完数"。 例如,6 的因子为 1 、 2 、 3,而 6=1+2+3,因此 6 是"
程序代码:
为什么出来的结果只有1

#include <stdio.h>
int main()
{
    int n,i,j,sum,be[200],k,f;
    scanf("%d",&n);
    for(i = 1;i<=n;i++)
    {
        k = 0;
        sum = 0;
        for(j = 1;j<=i;j++)                                //循环计算因子
        {
            if(i%j==0)
            {
                be[k] = j;                                //将因子存入数组,备用
                sum+=j;                                    //计算因子之和
                k++;
            }
        }
        if(sum==i)               

        {
            printf("%d its factors are",i);                    //将完数输出
            for(f=0;f<k;f++) printf(" %d",be[f]);
            printf("\n");
        }
    }
    return 0;
}  
2014-06-28 13:18
vvvcuu
Rank: 9Rank: 9Rank: 9
等 级:贵宾
威 望:12
帖 子:353
专家分:1253
注 册:2014-4-22
收藏
得分:0 
问题在这句:
程序代码:
......

 for(j = 1;j<=i;j++)                  //你改成j<i试试.     
......  


计算完数的因数之和的时候,是不包括自身的.  如果算上自身,那么就只有1自己满足定义了,所以你的程序只能输出1.

j作为i的因数,只能是j<i,而不能=.

代码测试环境:  WinXP+C-Free5.0.
2014-06-28 13:38
周满悦
Rank: 3Rank: 3
来 自:江苏
等 级:论坛游侠
威 望:2
帖 子:42
专家分:131
注 册:2014-6-21
收藏
得分:0 
#include <stdio.h>
#define MAX_NUMBERS 1001

void main(void)
{
 int number = 1;      //索引值
 int count_value = 0; //记录索引值的因子和
 int i;
   for (; number < MAX_NUMBERS; number++)   //1到1000个数字
   {
    for (i = 1; i < number; i++)   
        if (0 == number % i)         
         count_value = count_value + i;    //记录number的因子总值

        if (number == count_value)         //若number的因子总值与number相等,number是"完数"
        {
         printf("%d its factors are", number);
         for (i = 1; i < number; i++)      //输出"完数"的所有因子
             if (0 == number % i)
                 printf(", %d", i);
                 putchar(10);
            }
        count_value = 0;                   //在循环进入下个数前将上个数的因子总和清零,以便于求下个循环的数是不是"完数"
   }
 putchar(10);
}
//Copy去试一试

我只是一个自学的。
2014-06-29 07:22
快速回复:一个数如果恰好等于它的因子之和,这个数就称为"完数"。 例如,6 的因 ...
数据加载中...
 
   



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

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