YTU OJ 1911: 完美數

題目描述

任何一個自然數的約數中都有1和它本身,我們把小於它本身的因數叫做這個自然數的真約數。 如6的所有真約數是1、2、3,而且6=1+2+3。像這樣,一個數所有真約數的和正好等於這個數,通常把這個數叫做完美數。 古希臘人非常重視完美數。畢達哥拉斯發現它之後,人們就開始了對完美數的研究。 現在要求輸出所有在m和n範圍內的完美數。

輸入

輸入數據有多組,每組佔一行,包括兩個整數m和n(1≤m≤n≤99999999)。 輸入以0 0結束

輸出

對於每個測試實例,要求輸出所有在給定範圍內的完美數,就是說,輸出的完美數必須大於等於m並且小於等於n,如果有多個,則要求從小到大排列在一行內輸出,之間用一個空格隔開; 如果給定的範圍內不存在完美數,則輸出No; 每個測試實例的輸出佔一行。

樣例輸入

1 100
0 0

樣例輸出

6 28

提示

也許你應該要知道1->99999999之間的完美數只有:6, 28, 496, 8128, 33550336。

【AC代碼】

import java.util.Arrays;
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		long s[] = { 6, 28, 496, 8128, 33550336 };
		while (sc.hasNext()) {
			int k = 0;
			long a1 = sc.nextLong();
			long a2 = sc.nextLong();
			if (a1 == 0 && a2 == 0)
				break;
			for (int i = 0; i < 5; i++) {
				if (a2 >= s[i] && a1 <= s[i]) {
					k++;
					System.out.print(s[i] + " ");
				}
			}
			if (k == 0)
				System.out.print("No");
			System.out.println();
		}

	}
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章