1398 - Problem A

通过次数

0

提交次数

0

时间限制 : 1 秒 内存限制 : 32 MB

请写一个程序,给出指定整数范围【a ,b】内所有的完数,一个数如果恰好等于除它本身外的所有因子之和,这个数就称为完数,例如6是完数,因为6=1+2+3

题目输入

每一组数据为两个正整数,分别表示ab1<a<b<10^5)。

题目输出

指定范围内的所有完数,每个数占一行。

输入/输出样例

输入格式

1 100

输出格式

6
28

C语言解答

#include<stdio.h>

int main() {
        int a,b;
        while(scanf("%d %d",&a,&b)!=EOF) {
                if (a<=6 && b>=6) puts("6");
                if (a<=28 && b>=28) puts("28");
                if (a<=496 && b>=496) puts("496");
                if (a<=8128 && b>=8128) puts("8128");
        }
        return 0;
}

C++解答

#include<stdio.h>

int main() {
	int a,b;
	while(scanf("%d %d",&a,&b)!=EOF) {
		if (a<=6 && b>=6) puts("6");
		if (a<=28 && b>=28) puts("28");
		if (a<=496 && b>=496) puts("496");
		if (a<=8128 && b>=8128) puts("8128");
	}
	return 0;
}

Java解答

import java.util.*;

public class Main{
    public static void main(String[] args){
    Scanner in = new Scanner(System.in);
    while(in.hasNextInt()){
        int a = in.nextInt();
        int b = in.nextInt();
        if(a<=6){
            if(b>=8128)
                System.out.println("6\n28\n496\n8128");
            else if(b>=496)
                System.out.println("6\n28\n496");
            else if(b>=28)
                System.out.println("6\n28");
            else if(b>=6)
                System.out.println("6");
            }
        else if(a<=28){
            if(b>=8128)
                System.out.println("28\n496\n8128");
            else if(b>=496)
                System.out.println("28\n496");
            else if(b>=28)
                System.out.println("28");
            }
        else if(a<=496){
            if(b>=8128)
                System.out.println("496\n8128");
            else if(b>=496)
                System.out.println("496");
            }
        else if(a<=8128){
            if(b>=8128)
                System.out.println("8128");
            }
    }
}
}