1. 程式人生 > >【藍橋杯】 Torry的困惑(基本型)

【藍橋杯】 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.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);
	
}
}