求1000以内的完数问题
本帖最后由 风之残月 于 2014-11-10 10:13 编辑为什么我写的会程序会无法工作,只能写出前两个我看了例题解答和我的一样都是输出两个数就出问题
求大神看看什么原因
#include<stdio.h>
main()
{
int i,s,j,n,x,a;
for(i=1;i<1000;i++)
{
s=0;x=0;
for(j=1;j<i;j++)
{
if(i%j==0)
{
s=s+j;
a=j;
x++;
}
}
if(s==i)
{
printf("%5d its factors are :",i);
for(n=0;n<x;n++)
printf("%d,",a);
putchar('\n');
}
}
putchar('\n');
}
你的数组a空间开小了,越界了 本帖最后由 xubin2004198 于 2014-7-29 16:34 编辑
数组只有20个空间,其中有些数字的约数是超过了20个的,所以到不了496的时候程序就出错停止运行了,把他改成200就可以出现第三个数字了 #include <stdio.h>
const int MAXNUM=1000;
int check(int num){
int fator=2, sum_fators=0;
while(fator*fator<num){
if(num%fator==0){
sum_fators+=(fator+num/fator);
}
fator++;
}
if(fator*fator==num){
sum_fators+=fator;
}
if(sum_fators+1==num){
return sum_fators;
}else{
return 0;
}
}
int main(){
for(int i=2;i<=MAXNUM;i++){
if( check(i)){
printf("The Perfect number is %5d\n",i);
}
}
return 0;
}
我自己写了一个,测试只有3个完全数,
页:
[1]