失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > -04-09编程求1000以内的所有“完数”。所谓“完数”是指一个数恰好等于它的因子之

-04-09编程求1000以内的所有“完数”。所谓“完数”是指一个数恰好等于它的因子之

时间:2022-10-15 16:55:43

相关推荐

-04-09编程求1000以内的所有“完数”。所谓“完数”是指一个数恰好等于它的因子之

编程求1000以内的所有“完数”。所谓“完数”是指一个数恰好等于它的因子之和。例如,6是完数,因为6=1+2+3

#include"stdio.h"int main(){//编程求完数//完数就是一个数恰好等于它的因子之和 例如:6=1+2+3//一个数的因子的个数是有限的.最小的因子是1,最大的因子是它本身.int i, j,sum=0;//sum的值要初始化一下,因为在内层循环的第一次用的时候没有初始化,编译器会报错for (i = 1; i <= 1000; i++){sum = 0;//这个sum的初始化值很重要,因为sum是累加功能,每次循环后都会有值,所以要初始化一下//sum初始化这个地方最容易出错for (j = 1; j <= i / 2; j++)//i除以2的原因是:比如6,6的因子除了本身之外不可能大于他的一半{//另外除以2也是相当于除去它本身,比如:6=1+2+3中就没有6if (i%j == 0){sum = sum + j;//j从1开始,也就是+1的原因是每个数都至少有一个因子1}}if (sum == i)//判断{printf("%d的因子:", i);//输出它的因子for (j = 1; j <= i / 2; j++){if (i%j == 0){printf("%d ", j);}}printf("\n");}}return 0;}

用数组求完数

#include"stdio.h"int main(){int i, j;int arr[50] = {0 };//50个数字肯定够存前1000个数的因子,因为1到50的和大于1000for (i = 1; i <= 1000; i++){int k = 0;//每次循环都要初始化为0int sum = 0;//每次循环都要初始化为0for (j = 1; j <= i/2; j++){if (i%j == 0){arr[k] = j;//将找到的因子存放在数组中k++;}}for (j = 0; j < k; j++)//数组的下标从0开始,所以不能写<={sum = arr[j] + sum;}if (sum == i){printf("完数%d的因子:", i);for (j = 0; j < k; j++){printf("%d ", arr[j]);}printf("\n");}}return 0;}

-04-09编程求1000以内的所有“完数”。所谓“完数”是指一个数恰好等于它的因子之和。例如 6是完数 因为6=1+2+3

如果觉得《-04-09编程求1000以内的所有&ldquo;完数&rdquo;。所谓&ldquo;完数&rdquo;是指一个数恰好等于它的因子之》对你有帮助,请点赞、收藏,并留下你的观点哦!

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