演算法-藍橋杯-演算法訓練 Torry的困惑(基本型) (JAVA)
阿新 • • 發佈:2019-01-04
1 引言
Torry的困惑,我們程式設計來解決,我們的困惑,還是要我們自己來解決。。。
2 題目
問題描述
Torry從小喜愛數學。一天,老師告訴他,像2、3、5、7……這樣的數叫做質數。Torry突然想到一個問題,前10、100、1000、10000……個質數的乘積是多少呢?他把這個問題告訴老師。老師愣住了,一時回答不出來。於是Torry求助於會程式設計的你,請你算出前n個質數的乘積。不過,考慮到你才接觸程式設計不久,Torry只要你算出這個數模上50000的值。輸入格式
僅包含一個正整數n,其中n<=100000。
輸出格式
輸出一行,即前n個質數的乘積模50000的值。
樣例輸入
1
樣例輸出
2
3 原始碼
import java.util.*; class Main { public static void main(String[] args) { Scanner sc=new Scanner(System.in); int n=sc.nextInt(); int sum=1,num=0; for(int i=2;num<n;i++) { if(numberIsPrime(i)) { sum=(sum*i)%50000; num++; } } System.out.println(sum); } private static boolean numberIsPrime(int n) { for(int i=2;i<=Math.sqrt(n);i++) { if(n%i==0) { return false; } } return true; } }
4 思路講解
4.1 質數
質數(prime number)又稱素數,有無限個。
質數定義為在大於1的自然數中,除了1和它本身以外不再有其他因數。
4.2 質數的判斷方法
在一般領域,對正整數n,如果用2到之間的所有整數去除,均無法整除,則n為質數。質數大於等於2 不能被它本身和1以外的數整除。
4.3 問題的分析
這道題目要求計算的是前n個數內質數的乘積,算出這個數模上50000的值。所以,我們第一步就需要判斷前n個數中哪些是整數,如果是就計算。程式碼中使用“isPrime”這個方法來判斷該書是不是素數。“使用sum=(sum*i)%50000”這段程式碼來計算結果。因為計算的是前n個數,我們要定義一個num來記錄數量,不能超過n個數。
5 結束語
收穫收穫,又是收穫!
分享和幫助是人生一大樂事,希望可以幫助您。本人才疏學淺,如果有不當之處,還請批評指正。同時歡迎大家評論、點贊及轉發!