蓝桥杯 Torry的困惑(基本型)(java题解)
2016-06-02 10:16
429 查看
问题描述
Torry从小喜爱数学。一天,老师告诉他,像2、3、5、7……这样的数叫做质数。Torry突然想到一个问题,前10、100、1000、10000……个质数的乘积是多少呢?他把这个问题告诉老师。老师愣住了,一时回答不出来。于是Torry求助于会编程的你,请你算出前n个质数的乘积。不过,考虑到你才接触编程不久,Torry只要你算出这个数模上50000的值。
输入格式
仅包含一个正整数n,其中n<=100000。
输出格式
输出一行,即前n个质数的乘积模50000的值。
样例输入
1
样例输出
2
题解: 对每一个数判断是否素数,每判断出一个素数便和之前的乘积相乘并求模,通过判断素数时若这个数字直到它本身的平方根也没有能够整除此数的数字(1除外)便是素数进行优化。
Torry从小喜爱数学。一天,老师告诉他,像2、3、5、7……这样的数叫做质数。Torry突然想到一个问题,前10、100、1000、10000……个质数的乘积是多少呢?他把这个问题告诉老师。老师愣住了,一时回答不出来。于是Torry求助于会编程的你,请你算出前n个质数的乘积。不过,考虑到你才接触编程不久,Torry只要你算出这个数模上50000的值。
输入格式
仅包含一个正整数n,其中n<=100000。
输出格式
输出一行,即前n个质数的乘积模50000的值。
样例输入
1
样例输出
2
题解: 对每一个数判断是否素数,每判断出一个素数便和之前的乘积相乘并求模,通过判断素数时若这个数字直到它本身的平方根也没有能够整除此数的数字(1除外)便是素数进行优化。
import java.util.*; public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); int n = in.nextInt(); if(n==1){ System.out.println(2); System.exit(0); } if(n==2) { System.out.println(6); System.exit(0); } int sum = 6; int m = 2; int k = 2; while(k<n) { for(int i=2;i<=Math.sqrt(m);i++) { if(m%i==0) break; if(i==(int)Math.sqrt(m)) { sum = (sum*m)%50000; k++; } } m++; } System.out.println(sum); in.close(); } }
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树