失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > C语言判断完数(完整版)

C语言判断完数(完整版)

时间:2021-06-20 17:00:15

相关推荐

C语言判断完数(完整版)

C语言判断完数(完整版)

原创:丶无殇-12-15

简介:

大二了,作为大一新生的学长的我,总会有小迷妹小迷弟…(咳咳…小学妹小学弟)来问我问题,其中一类题目就是关于如何判断完数的。那么什么叫完数?

完数定义:

完数就是:它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。如果一个数恰好等于它的因子之和,则称该数为“完全数”。第一个完全数是6,第二个完全数是28,第三个完全数是496,后面的完全数还有8128、33550336等等。

例如:

6→1,2,3

28→1,2,4,7,14

判断方法:

判断完数首先要知道怎么判断,前面说了定义,现在只要知道怎么把完数的因子求出来。

假设一个数为n,我们可以用循环条件,让n分别和1,2,3,4,5……n-1进行判断是否能被整除,我们可以通过取余(%)的方法来进行判断。如果判断出来取余结果为0,那么就把这些因子全部加起来,得到因子的和。

接下来,将因子的和与n进行比较,如果相等,那么就是完数,反之不是完数。

类型一:判断一个完数

判断一个完数,就是运用基本输入函数(scanf),将你要判断的数据输入进来,之后运用上面所说的循环条件来判断。

这里运用到的知识点:循环结构,选择结构

#include "stdio.h"int main(){int n,i,sum=0;//定义一个存放因子和的变量,以及需要判断的数n,和循环条件用到的iprintf("请输入需要判断的数:");scanf("%d",&n);//存放需要判断的数nfor(i=1;i<n;i++)//循环条件找出因子并累加{if(n%i==0)sum+=i;}if(n==sum)printf("%d 是完数\n",n);elseprintf("%d 不是完数\n",n);return 0;}

类型二:判断多个完数

判断多个完数其实和判断一个完数是一样的,就是增加了一个循环的功能,给了循环体一个范围,让它在循环范围中判断这些数是否为完数。

运用知识点:循环结构,选择结构

#include "stdio.h"int main(){int n=2,i,sum;//定义一个存放因子和的变量,以及需要循环判断的起始数n,和循环条件用到的iwhile(n!=100)//此循环中的2~100就是循环的内容,{n++,sum=0;//每次n增加1,并将sum清零for(i=1;i<n;i++)//循环条件找出因子并累加{if(n%i==0)sum+=i;}if(n==sum)printf("%d 是完数\t",n);elseprintf("%d 不是完数\t",n);}return 0;}

类型三:用调用函数的方式来判断单个完数

用调用函数的方法只是让主函数中的步骤减少,使程序运行速度加快。

调用函数来判断是否为完数(完美数),定义了一个isPerfectNum()函数,通过返回值来判断是否为完数,返回1则为是,返回0则为否。

运用知识点:自定义函数,选择结构,循环结构

#include <stdio.h>int isPerfectNum(int n)//判断n是否为完数,如果是,则返回1,否则返回0{int i,s=0;for(i=1;i<n;i++)//遍历小于n的整数if(n%i==0)//可以整除,为真因子s+=i;//累加每个真因子到s上 if(s==n)//如果符合完数条件,返回1return 1; else //如果不是完数,返回0return 0;}int main(){int n;printf("请输入需要判断的数:");scanf("%d",&n);//输入n值if(isPerfectNum(n))//判断是否为完数,并输出结果。printf("%d 是完数\n",n);elseprintf("%d 不是完数\n", n);return 0;}

类型四:用调用函数的方式来判断多个完数

方法其实结合类型二和类型三就可以得到,这里就不放代码了,给你们留下自己学习的空间。

本博客由个人学习过程中遇到的问题经过自己总结,并加上搜索的内容结合起来写出来的。欢迎大家浏览,毕竟我也是个C语言的初学者,有所不到之处欢迎大佬指点!

如果觉得《C语言判断完数(完整版)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。