算法-蓝桥杯-算法训练 Torry的困惑(基本型) (JAVA)

时间:2020-12-08 11:06:26

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 结束语

    收获收获,又是收获!

    分享和帮助是人生一大乐事,希望可以帮助您。本人才疏学浅,如果有不当之处,还请批评指正。同时欢迎大家评论、点赞及转发!