逐行输出给定范围内每个完数的因子累加形式的分解式,每个完数占一行,格式为“完数 = 因子1 + 因子2 + ... + 因子k”,其中完数和因子均按递增顺序给出。若区间内没有完数,则输出“None”。C语言
时间: 2024-06-04 21:11:35 浏览: 83
#include <stdio.h>
int main()
{
int m, n, i, j, sum, k, a[100], flag;
scanf("%d%d", &m, &n); //输入范围
for (i = m; i <= n; i++) //枚举每个数
{
sum = 0; //初始化因子累加和
k = 0; //初始化因子个数
for (j = 1; j <= i / 2; j++) //枚举因子
{
if (i % j == 0) //若为因子
{
sum += j; //累加因子
a[k++] = j; //存储因子
}
}
if (sum == i) //若为完数
{
printf("%d = ", i); //输出完数
for (flag = 0; flag < k - 1; flag++) //输出因子
{
printf("%d + ", a[flag]);
}
printf("%d\n", a[flag]); //最后一个因子后无“+”
}
}
if (sum != i) //若范围内无完数
{
printf("None\n");
}
return 0;
}
阅读全文