c语言现在要求输出所有在m和n范围内的完美数.

Python016

c语言现在要求输出所有在m和n范围内的完美数.,第1张

两个问题

1 结尾多打印了一个。

u为找到完美数的个数。 所以打印应该是从a[0]到a[u-1]

不应该打印a[u]

按照你的写法, 循环应该是for(i = 0i <u-1i ++)

然后下面一行打印a[u-1]

2 没有处理u=0的情况。 单独判断一下, u=0时,输出No

问题分析与算法设计:根据完全数的定义,先计算所选取的整数a(a的取值1~1000)的因子,将各因子累加于m,若m等于a,则可确认a为完全数。

*程序说明与注释:

#include<stdio.h>

int

main()

{

int

a,i,m

printf("There

are

following

perfect

numbers

smaller

than

1000:\n")

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

/*循环控制选取1~1000中的各数进行判断*/

{

for(m=0,i=1i<=a/2i++)

/*计算a的因子,并将各因子之和m=a,则a是完全数输出*/

if(!(a%i))m+=i

if(m==a)

printf("%4d

",a)

}

printf("\n")

}

*运行结果

There

are

following

perfect

numbers

smaller

than

1000:

6

28

496

参考资料:

http://www.kuqin.com/tiku/20080424/7548.html

1、首先打开C语言的编辑软件,这里是使用VS2017版,在c语言的文件中写入头文件和主函数备用:

2、首先是用scanf函数定义一个输入数字的功能,然后判断完数,通过取余(%)的方法来进行判断。如果判断出来取余结果为0,那么就把这些因子全部加起来,得到因子的和和与n进行比较,如果相等,那么就是完数,反之不是完数;最后需要输出结果:

3、最后使用快捷键crtl+F5编译调试一下程序,打开的命令行输入一个数字,按下回车后屏幕上就会显示该数是否为完数了。以上用C语言判断完数的操作: