求1到1000以内的完数
想用子函数来求质因数,然后主函数完成1到1000的循环判断,程序如下,可是运行不出结果,应该是子函数中k=a/2有问题,局部变量没有设初值,按照我这个思路应该怎么改才能正确运行呢?#include<stdio.h>
int zys(int a)
{
int s=0,x,k,i=0;
static int b[20];
k=a/2;
for(x=1;x<=k;x++)
if(a%x==0)
{
b[i]=x;
i++;
}
for(x=0;x<i-1;x++)
s=b[x]+b[x+1];
return s;
}
main()
{
int d;
printf("1到1000以内完数为:");
for(d=1;d<=1000;d++)
if(d==zys(d))
printf("%d ",d);
}
int zys(int a)
{
int s=0,x,k,i=0;
static int b[20];
k=a/2;
for(x=1;x<=k;x++)
if(a%x==0)
{
b[i]=x;
i++;
}
for(x=0;x<i-1;x++)
s=b[x]+b[x+1];
return s;
}
main()
{
int d;
printf("1到1000以内完数为:");
for(d=1;d<=1000;d++)
if(d==zys(d))
printf("%d ",d);
}