蓝桥杯 - 算法训练 - Torry的困惑(基本型) - Java
-
问题描述
Torry从小喜爱数学。一天,老师告诉他,像2、3、5、7……这样的数叫做质数。Torry突然想到一个问题,前10、100、1000、10000……个质数的乘积是多少呢?他把这个问题告诉老师。老师愣住了,一时回答不出来。于是Torry求助于会编程的你,请你算出前n个质数的乘积。不过,考虑到你才接触编程不久,Torry只要你算出这个数模上50000的值。 -
输入格式
仅包含一个正整数n,其中n<=100000。 -
输出格式
输出一行,即前n个质数的乘积模50000的值。 -
样例输入
1
-
样例输出
2
思考
该题若是从求某一范围内的质数然后统计数量并求前n个质数的乘积显然是很难实现的
所以我从2开始向后求质数每求出一个质数通过count记录质数的数量+1,并计算出前count个质数的乘积
当count==n时停止计算质数,并输出乘积
代码 - Java
import java.util.Scanner;
public class PrimeNum {
public static void main(String args[]){
int n = 0 ;
Scanner scanner = new Scanner(System.in) ;
if(scanner.hasNext()){
n = scanner.nextInt() ;
}
caculator(n) ;
}
private static void caculator(int n) {
int count = 0 ; //记录质数的数量
int num = 2 ; //质数从2开始算起
int product=1 ; //声明乘积变量并初始化为1
while(count < n){//当count == n时停止计算质数
int i ;
for(i = 2 ; i < num ; i ++){ //算出num是不是质数
if(num % i == 0){
break ;
}
}
if(i == num){//若num是质数
product *= num ; //计算乘积
count ++ ; //计数器+1
}
num ++ ; //准备计算下一个数是不是质数
}
System.out.println(product % 50000);//输出乘积并对50000取模
}
}