天天看點

小明求素數積

小明求素數積

時間限制: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;
  }      

繼續閱讀