【#文档大全网# 导语】以下是®文档大全网的小编为您整理的《求正整数2和n之间的所有完全数c语言》,欢迎阅读!
求正整数2和n之间的所有完全数c语言
完全数是指一个正整数的所有因子(不包括本身)之和等于该数本身的数。目前已知的完全数只有5个,分别为6、28、496、8128、33550336。其中,6可以表示为$2^1\times3^1$,28可以表示为$2^2\times7^1$,496可以表示为$2^4\times31^1$,8128可以表示为$2^6\times127^1$,33550336可以表示为$2^8\times3^2\times7^2\times47^1$。
而求2和n之间的所有完全数,则需要从2开始,依次判断每个数是否为完全数。具体方法是,对于每个数i,计算它的所有因子之和,如果等于i本身,则i为完全数。因为一个数的因子不可能大于它的一半,所以可以在循环中只计算1到i/2之间的因子。
以下是求2和n之间的所有完全数的C语言代码:
#include
int main() { int n, i, j, sum;
printf("请输入一个正整数n:"); scanf("%d", &n);
printf("2和%d之间的完全数有:\n", n); for (i = 2; i <= n; i++) { sum = 0;
for (j = 1; j <= i/2; j++) { if (i % j == 0) { sum += j; } }
if (sum == i) { printf("%d ", i); } }
printf("\n"); return 0; }
运行程序后,输入一个正整数n,程序就会输出2和n之间的所有完全数。例如,当n为100时,程序输出的完全数为6、28。
需要注意的是,求完全数的方法并不高效,因为完全数非常稀少,大多数数都不是完全数。如果要求更大范围内的完全数,需要使用更高效的算法。
本文来源:https://www.wddqxz.cn/a39269efe63a580216fc700abb68a98271feacaf.html