鱼C论坛

 找回密码
 立即注册
查看: 2178|回复: 3

求1000以内的完数问题

[复制链接]
发表于 2014-7-29 14:09:53 | 显示全部楼层 |阅读模式
5鱼币
本帖最后由 风之残月 于 2014-11-10 10:13 编辑

为什么我写的会程序会无法工作,只能写出前两个我看了例题解答和我的一样都是输出两个数就出问题
求大神看看什么原因

#include<stdio.h>
main()
{
        int i,s,j,n,x,a[20];
        for(i=1;i<1000;i++)
        {
                s=0;x=0;
                for(j=1;j<i;j++)
                {
                        if(i%j==0)
                        {
                                s=s+j;
                           a[x]=j;
                       x++;
                        }
                }
                if(s==i)
                {
                printf("%5d its factors are :",i);
                for(n=0;n<x;n++)
                        printf("%d,",a[n]);
                putchar('\n');
                }
        }
        putchar('\n');
}


最佳答案

查看完整内容

你的数组a空间开小了,越界了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-7-29 14:09:54 | 显示全部楼层
你的数组a空间开小了,越界了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-7-29 15:57:45 | 显示全部楼层
本帖最后由 xubin2004198 于 2014-7-29 16:34 编辑

数组只有20个空间,其中有些数字的约数是超过了20个的,所以到不了496的时候程序就出错停止运行了,把他改成200就可以出现第三个数字了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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个完全数,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-24 16:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表