page contents

C语言趣味小题目

题目:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程找出1000以内的所有完数。

题目:一个数如果恰好等于它的因子之和,这个数就称为“完数”。

例如6=1+2+3.

编程找出1000以内的所有完数。

1.程序分析:

求因数:

对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:

(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。

(2)如果n<>k,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你n,重复执行第一步。

(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。

通过得到的因数求和再与n做对比即可。

2.程序源代码:

#include <stdio.h>

#include <conio.h>

main()

{

  static int k[10];

  int i,j,n,s;

  for(j=2;j<1000;j++)

  {

    n=-1;

    s=j;

    for(i=1;i<j;i++)

    {

      if((j%i)==0)

      {

        n++;

        s=s-i;

        k[n]=i;

      }

    }

    if(s==0)

    {

      printf("%d is a wanshu",j);

      for(i=0;i<n;i++)

      printf("%d,",k);

      printf("%d\n",k[n]);

    }

  }

  getch();

}







  • 发表于 2021-07-07 14:04
  • 阅读 ( 558 )
  • 分类:C/C++开发

你可能感兴趣的文章

相关问题

0 条评论

请先 登录 后评论
文双
文双

NB

71 篇文章

作家榜 »

  1. 轩辕小不懂 2403 文章
  2. 小柒 1470 文章
  3. Pack 1135 文章
  4. Nen 576 文章
  5. 王昭君 209 文章
  6. 文双 71 文章
  7. 小威 64 文章
  8. Cara 36 文章