一个数恰好等于它的因子之和。例如:6=1+2+3 请编程找出1000以内的完数。
1
#include <stdio.h>
int get_comn(int n)
{
int total = 0;
int i;
for(i = 1; i < n; i++)
{
if(n % i == 0)
{
total = total + i;
}
}
return total;
}
int main()
{
int i;
for(i = 1; i < 1001; i++)
{
if(i == get_comn(i))
{
printf("%d\n", i);
}
}
2
#include <stdio.h>
void print_perfect(int n)
{
int i;
for(i = 1; i <= n / 2; i++)
{
if(n % i == 0)
{
printf("%d ", i);
}
}
}
int is_perfect(int n)
{
int i;
int total = 0;
for(i = 1; i <= n / 2; i++)
{
if(n % i == 0)
{
total += i;
}
}
return(n == total);
}
int main()
{
int i;
for(i = 1; i < 1000; i++)
{
if(is_perfect(i))
{
printf("%d\n", i);
print_perfect(i);
printf("\n");
}
}
return 0;
}