小明求素數積
時間限制:1000 ms | 記憶體限制:65535 KB
難度:1
描述
小明最近遇到了一個素數題,是給你一個正整數N(2=<N<=1000)讓你求出2~N的所有素數乘積的後六位。
輸入
第一行輸入一個正整數T(T<=20)表示有T組資料
每組資料占一行,輸入一個正整數N(2=<N<=1000)
輸出
每組資料輸出占一行,輸出2~N素數乘積的後六位
樣例輸入
3
3
6
43
樣例輸出
6
30
670030
還沒有發現更簡單的方法,隻好用大數階乘了。
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
int a=sc.nextInt();
while(a>0){
a--;
int b=sc.nextInt();
BigInteger sum=new BigInteger("1"+"");
for(int c=2;c<=b;c++){
if(num(c)){
sum=sum.multiply(new BigInteger(c+""));
}
}
char[] i=String.valueOf(sum).toCharArray();
if(i.length>=6){
for(int c=i.length-6;c<i.length;c++){
System.out.print(i[c]);
}
}
else{
System.out.println(i);
}
}
}
public static boolean num(int n){
if(n==2){
return true;
}
for(int a=2;a<n;a++){
if(n%a==0){
return false;
}
}
return true;
}