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 结束语
收获收获,又是收获!
分享和帮助是人生一大乐事,希望可以帮助您。本人才疏学浅,如果有不当之处,还请批评指正。同时欢迎大家评论、点赞及转发!