您的位置:首页 > 编程语言 > Java开发

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

2018-03-24 10:59 316 查看

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

    收获收获,又是收获!
    分享和帮助是人生一大乐事,希望可以帮助您。本人才疏学浅,如果有不当之处,还请批评指正。同时欢迎大家评论、点赞及转发!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息