题目:一个数如果恰好等于它的因子之和,就称这个数为完数。例如6=1+2+3,编程找出1000以内所有的完数。
分析:
1.先要判断这是不是完数--看符合完数的条件-怎么拆分出这些因子--然后再找1000以内的所有完数
2. 拆分因子:用for循环嵌套if判断
#include<stdio.h> int main(){ int n,m=6; for(n=1;n<6;n++){ if(m%n==0){ printf("%d\n",n); } } printf("\n"); return 0; }
3.找到一千以内的所有完数---下面我使用的是函数的调用
#include<stdio.h> //函数的调用 int compNum(int m){ //m类似于例题中的 6 int n; int sum=0; for(n=1;n<m;n++){ //找m 的因数 if(m%n==0){ sum += n; } } if(m == sum){ //如果 m=因数相加 return 1; }else{ return 0; } } int main(){ int compNum(int m); //函数m的调用 int s; for(s=1;s<=1000;s++){ //在1000以内的所有完数 if(compNum(s)){ printf("%d\n",s); } } return 0; }
完数做起来还是比较难的,我试了很多次才可运行