具体代码如下:
#include
<stdio.h>
int
fun(int
n)
{
int
i,sum
sum=1
for(i=2i<=n/2i++)
if
(n%i==0)
sum+=i
return
sum
}
void
main()
{
int
a,b,c
for
(a=2a<=1000a++)
{
b=fun(a)
c=fun(b)
if
(c==a)
printf("%5d%5d\n",a,b)
}
}
大概看了一下,你判断是否为因子的地方有问题,应该用取余运算符号:%
用除号是不行的,呵呵。
另外,你把求一个数的因子和,写成一个函数,这样的话,程序看起来更明了,你也不容易混乱。
求因子和的函数如下:
int sumf(int num){
int i,sum = 0
for(i = 1i <= num i ++)
{
if(num % i == 0)
{
sum += i
}
}
return sum
}
不过你所说的因子是否包含了1和数本身?如果包含的话,我运行了一下,2到1000好像没发现有满足条件的。
如果不包含1和本身,倒是有几个,全程序是这样:
#include <stdio.h>#include <stdlib.h>
int main(void)
{ int i
for(i = 2 i < 1000 i++)
{
//printf("%d--%d--%d\n",i,sumf(i),sumf(sumf(i)))
if(i == sumf(sumf(i)))
{
printf("%d %d\n",i,sumf(i))
}
}
system("pause")
return 0
}
int sumf(int num)
{
int i,sum = 0
for(i = 2i < num i ++)
{
if(num % i == 0)
{
sum += i
}
}
return sum
}