Torry的困惑

import java.util.Scanner;

/*問題描述
Torry從小喜愛數學。一天,老師告訴他,像2、3、5、7……這樣的數叫做質數。Torry突然想到一個問題,前10、100、1000、10000……個質數的乘積是多少呢?他把這個問題告訴老師。老師愣住了,一時回答不出來。於是Torry求助於會編程的你,請你算出前n個質數的乘積。不過,考慮到你才接觸編程不久,Torry只要你算出這個數模上50000的值。
輸入格式
僅包含一個正整數n,其中n<=100000。
輸出格式
輸出一行,即前n個質數的乘積模50000的值。
樣例輸入
1
樣例輸出
2
*/
public class Torry的困惑 {
	//運行時性能較差  不過運行成功之後每次查找結果時間複雜度爲O(1) 適合批量查詢結果
	static int[] arr = new int[100000];//用來存儲計算機結果的數組

	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int x = 1; //x是數組arr的下標
		arr[x] = 2;//第一個質數的乘積就是第一個質數2
		for (int i = 3; i <= 10000000; i++) {
			if (isZhiShu(i)) {//判斷是否爲質數
				x++;//每找到一個質數下標加1
				arr[x] = arr[x - 1] * i;//arr【x】爲上一個計算結果乘當前質數
			}
		}
		while (true) {
			int n = in.nextInt();//用戶輸入並計算結果
			System.out.println(arr[n] % 50000);
		}

	}

	private static boolean isZhiShu(int num) {
		for (int i = 2; i <= Math.sqrt(num); i++) {
			if (num % 2 == 0) {
				return false;
			}
		}
		return true;
	}

}

問題描述   Torry從小喜愛數學。一天,老師告訴他,像2、3、5、7……這樣的數叫做質數。Torry突然想到一個問題,前10、100、1000、10000……個質數的乘積是多少呢?他把這個問題告訴老師。老師愣住了,一時回答不出來。於是Torry求助於會編程的你,請你算出前n個質數的乘積。不過,考慮到你才接觸編程不久,Torry只要你算出這個數模上50000的值。 輸入格式   僅包含一個正整數n,其中n<=100000。 輸出格式   輸出一行,即前n個質數的乘積模50000的值。 樣例輸入 1 樣例輸出

2

点赞