找出1000之内的所有完数
找出1000之内的所有完数
*5种不同风格**的C语言程序来实现这个功能。
这些方法涵盖了从基础入门到算法优化,再到递归和不同控制流的写法。
已知1000以内的完数有:6, 28, 496。
方法一:基础暴力解法(最易理解)
这是最直观的写法。外层循环遍历1到1000,内层循环寻找该数字的所有因子并累加。如果因子和等于数字本身,则输出。
#include<stdio.h>intmain(){inti,j,sum;for(i=1;i<=1000;i++){sum=0;// 每次重置累加器// 寻找 i 的所有真因子(小于 i 的因数)for(j=1;j<i;j++){if(i%j==0){sum+=j;}}// 判断是否为完数if(sum==i){printf("%d 是一个完数\n",i);}}return0;}方法二:函数模块化写法(工程规范)
将判断完数的逻辑封装成一个单独的函数isPerfect。这种写法结构清晰,便于维护和复用。
#include<stdio.h>// 判断一个数是否是完数的函数intisPerfect(intn){intsum=0;for(inti=1;i<n;i++){