怎么用C语言编写程序来找出2~5000中的完数?

怎么用C语言编写程序来找出2~5000中的完数?,第1张

1、解题思路:虚掘所谓完数是一些特嫌兄殊的自然数。如果一个数恰好等于它的因子之和,则称该数为“完全数”。先定义一个函数用于判断一个数是否是完数,接着依次从2到5000依次循环判断。

2、参考代码:

#include <stdio.h>

int fun(int n){//判断n是否是完数 

    int i,sum=0

    for(i=1i<ni++)

        if(n%i==0) sum+=i

    if(sum==i) return 1

    return 0

int main ()

{

    int i

    for(i=2i<5000i++)

      差者核  if(fun(i))

            printf("%d ",i)

    return 0 

}

3、运行结果:6 28 496

完数,即完全数(Perfect number),又称完美数或羡坦物完备数,是一些特殊的自然数。其所有的真因子(即除了信宴自身以外的约数)的和(即因子函数),恰好等于本身。

根据该定义 可以得出判断完数的函数如下:

#include <stdio.h>

int is_perfect_number(int n)

{

int i,s=0

for(i = 1i <=n/2i ++)

if(n%i == 0) s+= i//兄液统计所有真因子的和。

if(s == n) return 1//如果与原值相等,则该数为完数。

return 0//不是完数。

}

根据该函数,只需要对需要打印的范围内1 ~1000做遍历,并逐一调用该函数判断,如果返回1则打印即可。

完整代码如下:

#include <stdio.h>

int is_perfect_number(int n)

{

int i,s=0

for(i = 1i <=n/2i ++)

if(n%i == 0) s+= i//统计所有真因子的和。

if(s == n) return 1//如果与原值相等,则该数为完数。

return 0//不是完数。

}

int main()

{

int n

for(n = 1n <1000n++)

if(is_perfect_number(n)) printf("%d,",n)

}

改好了,看注释拆迅

#include<stdio.h>

int main ()

{

int a = 1, i = 1, b = 0

while (a <= 1000)

{

while (i <a) //不应坦脊该包括a本身

{

if (a % i == 0)

b += i//多了++

i++

}

if (b == a)

{

printf ("%d its factors are ", a)

i = 1

while (i <a) //不应该包括a本旅信此身

{

if (a % i == 0)

printf ("%d,", i) //斜杠是干什么用的?多了++

i++

}

printf("\n")//加个换行

}

a++

b = 0

i = 1

}

return 0

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12230275.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-22
下一篇 2023-05-22

发表评论

登录后才能评论

评论列表(0条)

保存