Press "Enter" to skip to content

完数

一个正整数的因子是所有可以整除它的正整数。而一个数如果恰好等于除它本身外的因子之和,这个数就称为完数。例如6=1+2+3(6的因子是1,2,3)。
现在,你要写一个程序,读入两个正整数n和m(1<=n<m<1000),输出[n,m]范围内所有的完数。
提示:可以写一个函数来判断某个数是否是完数。


输入格式:

两个正整数,以空格分隔。

输出格式:

其间所有的完数,以空格分隔,最后一个数字后面没有空格。如果没有,则输出一个空行。


输入样例:1 10
输出样例:6


#include<stdio.h>
#include<stdlib.h>

int main(){
    //输入整数变量 
    int n,m;
    do{
        scanf("%d",&n); 
        scanf("%d",&m);     
    }while(0>n&&n>=m&&m>999);
    //命名参数 
    int x,i;
    int sum;
    int count = 0;

    for(x=n;x<=m;x++){  
        sum =0;
        //判断是否是完数 
        for(i=1;i<x;i++){
            if(x%i == 0){
                sum += i;
                }
            }
            //是完数的话,计数器+1并输出 
            if(sum == x){
                count ++;
                if(count>1){
                    printf(" %d",x);
                }else{
                    printf("%d",x);
                }           
            }else{
                printf("");
            }
    }
    system("pause");
    return 0;
}