acm 1000以内完数,代码错了不会改,求大神修改下或者帮忙指点
问题 O: 1000以内的完数
题目描述
一个数如果恰好等于它的因子之和,这个数就称为"完数"。例如6=1+2+3.编程 找出1000以内的所有完数。
本题要求使用函数实现,函数原型
void startJudge(int value) {
if( Judge(value) ) {
printf("%d ",value);
}
}
输入
一个sum (sum < 1000) ,表示测试数据的组数,接着sum行,每一行表示一个测试数据n,表示要求1到n以内的完数,1在这里不算是完数。
输出
范围内的完数,如果范围内没有完数请输出none,每组测试数据空出一行(如果完数有多个,每个数字后面都输出空格)。
样例输入
2
1
6
样例输出
none
6
我的错代码:
#include<stdio.h>
int main()
{
int n,i,sum,j,k,m;
scanf("%d",&j);
sum=0;
for(k=0; k<j; k++)
{
scanf("%d",&n);
for(m=1; m<n; m++)
{
for(i=1; i<m; i++)
{
if(m%i==0)
sum=i+sum;
}
}
if(sum==m)
{
printf("%d ",sum);
}
if(sum==0)
{
printf("none\n");
}
}
}
我的代码只符合样例,输入100,1000就是错,,,,,,,,,不要管题目要求里的函数。