注册 登录
编程论坛 C语言论坛

c语言程序设计问题

Z1020 发布于 2019-11-25 13:38, 1527 次点击
【问题描述】

一个整数,如果其所有小于它本身的因子(包括1)之和正好等于该数,则称其为“完全数”。编写程序计算某一范围内的所有“完全数”。

【输入形式】

从控制台输入数据范围的下限m和上限n,m和n都为整数,且1<=m<=n<=10000,m和n之间用一个空格分割。

【输出形式】

向控制台输出m和n之间的所有&ldquo;完全数&rdquo;(包括m和n本身),所有输出的数据以从小到大的顺序显示在一行上,各数之间以一个空格分割。若该范围内没有完全数,则输出字符串No Answer。

【样例1输入】

1 100

【样例1输出】

6 28
我的代码如下:

#include<stdio.h>
int main()
{
    int m,n,x,sum,y,a;
    sum=0,a=0;
    scanf("%d%d",&m,&n);
    for(x=m;x<=n;x++)
    {
        for(y=1;y<x;y++)
        {
            if(x%y==0)
            sum+=y;
        }
        if(sum==x)
        {
            printf("%d",x);
            a++;
        }
    }
    if(a==0)
    printf("No Answer");
    return 0;
}
请各位大佬帮忙看看是哪错了,谢谢谢谢。
2 回复
#2
rjsp2019-11-25 14:05
要不,你就听听C标准的劝,不要将变量污染到块外面,即
删掉 int sum; 和 sum=0; 而是改为 for(x=m;x<=n;x++){ 后面加一句 int sum = 0;
#3
Z10202019-11-25 18:12
回复 2楼 rjsp
wow~~~对不起我傻了。。。谢谢谢谢
1