千寻0 发表于 2014-7-29 14:09:53

求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');
}


LoveYang 发表于 2014-7-29 14:09:54

你的数组a空间开小了,越界了

xubin2004198 发表于 2014-7-29 15:57:45

本帖最后由 xubin2004198 于 2014-7-29 16:34 编辑

数组只有20个空间,其中有些数字的约数是超过了20个的,所以到不了496的时候程序就出错停止运行了,把他改成200就可以出现第三个数字了

elvo 发表于 2014-7-29 16:54:09

#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]
查看完整版本: 求1000以内的完数问题