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