1398 - Problem A
时间限制 : 1 秒
内存限制 : 32 MB
请写一个程序,给出指定整数范围【a ,b】内所有的完数,一个数如果恰好等于除它本身外的所有因子之和,这个数就称为完数,例如6是完数,因为6=1+2+3。
题目输入
每一组数据为两个正整数,分别表示a和b(1<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"); } } } }