Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2538999
  • 博文数量: 308
  • 博客积分: 5547
  • 博客等级: 大校
  • 技术积分: 3782
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-24 09:47
个人简介

hello world.

文章分类

全部博文(308)

分类: C/C++

2010-07-28 10:08:43

    一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如,6的因子为1,2,3而6=1=2=3,因此6是“完数”。编程序找出1000之内的所有完数,并按下面格式输出其因子:
6 its factors are 1,2,3
    看到这个题目,我们需要解决的是找出一个数的因子,而找因子的规律是,从1开始进行求余运算,如果求余为零,则该数为其中的一个因子。然后递加1,再进行判断,直到递加到和该数相等。然后把所有的因子加起来,看时候和该数相同。如果相同,然后在进行该项的输出。输出可以另写一个函数,进行调用。代码如下:

#include <stdio.h>

void print_item(int);
int main(int argc,int *argv[])
{
    int i,j,k = 0,result;
    int n = 1000;
    for (i = 1; i < n; i++)
    {
        result = 0;
       for (j = 1; j < i; j++)
       {
           if (i % j == 0)
           {
              result += j;
           }
       }
       
       if (result == i)
       {
          print_item(i);
       }
    }
    
    system("pause");
    return 0;
}

void print_item(int number)
{
     int i;
     printf("%d its factors are:",number);
     for (i = number; i > 1; i--)
     {
         if (number % i == 0)
         {
            if (i == 2)
            {
               printf("%d",number / i);
            }
            else
            {
                printf("%d,",number / i);
            }
         }
     }
     printf("\n");
}

经程序运算1到1000中的完数有6,28,496

阅读(9671) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~