-
描述
-
小明最近遇到了一个素数题,是给你一个正整数N(2=<N<=1000)让你求出2~N的所有素数乘积的后六位。
package 暑期培训_2013_08_04;
import java.math.BigInteger;
import java.util.Scanner;
public class NYOJ_225小明求素数积_201308131527 {
/**
* @param args
*///541238 chenguichao 小明求素数积 Accepted 35 799 java 08-13 16:45:20
static int []a = new int [1005];
static boolean []vis = new boolean [1005];//初值为false
static int N;
public static void main(String[] args) {
int n = (int) Math.sqrt(1010);
for(int i=2; i<=n;i++){//快速求素数
if(!vis[i]){//素数进
for(int j=i*i; j<=1000; j+=i){
vis[j] = true;标记非素数
}
}
}
Scanner sc = new Scanner(System.in);
int T = sc.nextInt();
while(T-->0){
N = sc.nextInt();
BigInteger sum = BigInteger.valueOf(1);
// BigInteger i ;
for( int i = 2; i<=N; i++ ){
if(!vis[i]){
sum =sum.multiply(BigInteger.valueOf(i)).mod(BigInteger.valueOf(1000000)) ;
}
}
System.out.println(sum);
}
}
}