#include <stdio.h>
#define NUM 10000
/* 完数:它所有的真因子(即除了自身以外的约数)的和(即因子函数),恰好等于它本身。
* 问题:求10000以内的所有完数 */
//求完数
void f(int x);
int main()
{
for (int i=1;i<NUM;i++)
{
f(i);
}
return 0;
}
void f(int x)
{
int arr[100];
int k = 0,sum = 0;
for (int i=1;i<=x/2;i++) // x/2可提高运算速率
{
if(x%i == 0)
{
arr[k++] = i;
sum += i;
}//分解因数
}
if (sum == x)
{
printf("%d = ",x);
for (int j=0;j<k;j++)
{
printf("%8d",arr[j]);
}
puts("\n");
}
}完数_1
本文提供了一个使用C语言编写的程序,该程序能够找出10000以内的所有完数(即其真因子之和等于自身的数)。通过分解每个数的因子并检查它们的总和是否等于该数来实现这一目标。
756

被折叠的 条评论
为什么被折叠?



