【藍橋杯】 Torry的困惑(基本型)
阿新 • • 發佈:2019-01-02
問題描述 Torry從小喜愛數學。一天,老師告訴他,像2、3、5、7……這樣的數叫做質數。Torry突然想到一個問題,前10、100、1000、10000……個質數的乘積是多少呢?他把這個問題告訴老師。老師愣住了,一時回答不出來。於是Torry求助於會程式設計的你,請你算出前n個質數的乘積。不過,考慮到你才接觸程式設計不久,Torry只要你算出這個數模上50000的值。輸入格式 僅包含一個正整數n,其中n<=100000。輸出格式 輸出一行,即前n個質數的乘積模50000的值。樣例輸入
1
樣例輸出
2
思路:先用篩法把素數篩選出來,然後再進行乘積
import java.util.Scanner; public class Main { public static int[] prime = new int[1000005]; public static boolean book[] = new boolean[3000005]; public static int num=1; public static void findPrime() { for(int i=2;i<=300000;i++) { if(book[i] == false) { prime[num++]=i; for(int j=i+i;j<=300000;j=j+i) { book[j]=true; } } if(num == 100001) break; } } public static void main(String[] args) { Scanner in = new Scanner(System.in); int n =in.nextInt(); long muti=1; findPrime(); for(int i=1;i<=n;i++) { muti=(muti*prime[i])%50000; } System.out.println(muti); } }