藍橋杯之演算法訓練 Torry的困惑(基本型)
阿新 • • 發佈:2019-01-03
題目:演算法訓練 Torry的困惑(基本型)
問題描述
Torry從小喜愛數學。一天,老師告訴他,像2、3、5、7……這樣的數叫做質數。Torry突然想到一個問題,前10、100、1000、10000……個質數的乘積是多少呢?他把這個問題告訴老師。老師愣住了,一時回答不出來。於是Torry求助於會程式設計的你,請你算出前n個質數的乘積。不過,考慮到你才接觸程式設計不久,Torry只要你算出這個數模上50000的值。
輸入格式
僅包含一個正整數n,其中n<=100000。
輸出格式
輸出一行,即前n個質數的乘積模50000的值。
樣例輸入
1
樣例輸出
2
答案:
import java.util.*;
public class Main
{
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
// 輸入,求前幾個質數,質數的個數
int n = in.nextInt();
if (n == 1)
{
System.out.println(2);
System.exit(0);
}
if (n == 2)
{
System.out .println(6);
System.exit(0);
}
int sum = 6;//前n個質數的乘積模50000的值
int m = 2;//從2開始依次+1,直到找完n個質數
int k = 2;//質數的個數
while (k < n)
{
for (int i = 2; i <= Math.sqrt(m); i++)
{
if (m % i == 0)
{//若這個數能被從2開始到自身的平方根內的數整除,則這個數不是質數。
break;
}
if (i == (int) Math.sqrt(m))
{
sum = (sum * m) % 50000;
// 算好一個,質數的個數就加一
k++;
}
}
m++;
}
System.out.println(sum);
in.close();
}
}
個人小結:
質數又稱素數。一個大於1的自然數,除了1和它自身外,不能被其他自然數整除的數叫做質數;否則稱為合數。