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

演算法-藍橋杯-演算法訓練 Torry的困惑(基本型) (JAVA)

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 結束語

    收穫收穫,又是收穫!

    分享和幫助是人生一大樂事,希望可以幫助您。本人才疏學淺,如果有不當之處,還請批評指正。同時歡迎大家評論、點贊及轉發!