1. 程式人生 > >藍橋杯之演算法訓練 Torry的困惑(基本型)

藍橋杯之演算法訓練 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.*;

public
class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); // 輸入,求前幾個質數,質數的個數 int n = in.nextInt(); if (n == 1) { System.out.println(2); System.exit(0); } if (n == 2) { System.out
.println(6); System.exit(0); } int sum = 6;//前n個質數的乘積模50000的值 int m = 2;//從2開始依次+1,直到找完n個質數 int k = 2;//質數的個數 while (k < n) { for (int i = 2; i <= Math.sqrt(m); i++) { if (m % i == 0) {//若這個數能被從2開始到自身的平方根內的數整除,則這個數不是質數。
break; } if (i == (int) Math.sqrt(m)) { sum = (sum * m) % 50000; // 算好一個,質數的個數就加一 k++; } } m++; } System.out.println(sum); in.close(); } }

個人小結:

質數又稱素數。一個大於1的自然數,除了1和它自身外,不能被其他自然數整除的數叫做質數;否則稱為合數。