牛客网 PAT 算法历年真题 1003: 数素数 (20)
1003:数素数 (20)
题目描述
令Pi表示第i个素数。现任给两个正整数M <= N <= 10000,请输出PM到PN的所有素数。
输入描述:
输入在一行中给出M和N,其间以空格分隔。
输出描述:
输出从PM到PN的所有素数,每10个数字占1行,其间以空格分隔,但行末不得有多余空格。
输入例子:
5 27
输出例子:
11 13 17 19 23 29 31 37 41 4347 53 59 61 67 71 73 79 83 8997 101 103 思路分析: 这个题,判断素数大家都会,重点是在于这个算法是否会超时,以及输出格式的问题: 素数判断:除了1和它本身,没有其他的因子,称为素数, 可以看成 循环变量从2到n-1,但是,如果数非常大的话,这就很头疼了,咱们来简化一下判断素数的方法,比如n=9时,因为9开根等于3,所以,判断到3就可以确定9不是素数,因此,循环变量i可以从2到根号下n,也就是【2-sqrt(n)】当一个数被确认是素数时,就要输出了, 输出格式: 题目要求,10个一换行那么咱就直接判断count(从2开始累加的素数的个数),分为3种情况: 1.素数的位置小于题目要求的输出范围,即count<n,这时候,不输出,继续循环;2.素数的位置在题目要求的输出范围,首先行内输出素数,这时,素数后面的输出,又分为3种情况:
①输出的素数不是一行的第10个,即(count-m+1)%10!=0, 例如题目给的测试用例,m=5,当count=5时,(count-m+1)%10=1,当count=13时,(count-m+1)%10=9, 这个时候需要输出一个空格“ ”;
②输出的素数恰巧是一行的第10个,即(count-m+1)%10=0, 例如,当count=14时,(count-m+1)%10 = 0 ,这个时候需要输出一个空行; ③数出的素数是要求输出的最后一个,即count=n,这个时候,直接结束程序即可; 3.素数的位置大于题目要求的输出范围,其实,程序永远都走不到这一步,当输出的素数是要求输出的最后一个时,在第二种情况的第三点已经结束程序啦 Java 代码如下:
import java.util.Scanner; public class Main {public static void main(String[] args) {Scanner sca = new Scanner(System.in);int m = sca.nextInt();int n = sca.nextInt();int count = 1;if(m == 1) {System.out.print(2);if(n == 1)return;elseSystem.out.print(" ");}int i = 3;while(true){if(f(i)) { //素数判断count++; //素数数目+1if(count >= m) { //素数的位置在题目要求的输出范围System.out.print(i);// 行内输出素数if(count==n){//数出的素数是要求输出的最后一个,结束程序return;}if((count-m+1) % 10 != 0) {//①(count-m+1)%10!=0,输出空格“ ”System.out.print(" ");}else { //①(count-m+1)%10==0,输出空行 System.out.println();}}} i+=2;}}//判断素数static boolean f(int x){for(int j = 2; j < Math.sqrt(x) + 1; j++) {if(x % j == 0) {return false;} }return true;} }
转载于:https://www.cnblogs.com/l199616j/p/10307179.html
牛客网 PAT 算法历年真题 1003: 数素数 (20)相关推荐
- Java算法:华为机试算法(下),华为算法Java版,牛客网华为算法73~108题
接上篇:Java算法:华为机试算法(中),华为算法Java版,牛客网华为算法55~72题 HJ73 计算日期到天数转换 计算日期到天数转换 题目描述 根据输入的日期,计算是这一年的第几天.. 测试 ...
- 牛客网 PTA乙级真题 1003 数素数
数素数 (20) 时间限制 1000 ms 内存限制 32768 KB 代码长度限制 100 KB 判断程序 Standard (来自 小小) 题目描述 令Pi表示第i个素数.现任给两个正整数M &l ...
- 牛客网SQL大厂面试真题(二)
SQL25 某宝店铺的SPU数量 SELECT style_id, COUNT(1) AS SPU_num FROM product_tb GROUP BY style_id ORDER BY SPU ...
- Java算法:牛客网腾讯笔试真题算法Java版1-11题
题号 题目 知识点 难度 通过率 QQ1 生成格雷码 递归 简单 22.61%QQ2 微信红包 模拟 简单 25.61%QQ3 编码 字符串模拟 中等 26.60%QQ4 游戏任务标记 模拟 中等 3 ...
- Java算法:牛客网字节跳动笔试真题算法Java版1-27题
题号 题目 知识点 难度 通过率 ZJ1 附加题 动态规划数组 中等 16.45% ZJ2 编程题1 贪心 中等 11.65% ZJ3 编程题2 字符串贪心 中等 29.30% ZJ4 附加题 递归模 ...
- Java算法:牛客网拼多多笔试真题算法Java版1-13题
题号 题目 知识点 难度 通过率 PDD1 最大乘积 贪心模拟 中等 14.45%PDD2 大整数相乘 模拟 中等 27.32%PDD3 六一儿童节 贪心 中等 24.74%PDD4 迷宫寻路 模拟 ...
- 牛客网SQL大厂面试真题(一)
SQL1 各个视频的平均完播率 SELECT log.video_id, ROUND(SUM(IF(TIMESTAMPDIFF(SECOND, log.start_time, log.end_time ...
- 牛客网 SQL大厂面试真题篇 SQL2 平均播放进度大于60%的视频类别
描述 用户-视频互动表tb_user_video_log id uid video_id start_time end_time if_follow if_like if_retweet commen ...
- 牛客网 SQL大厂面试真题篇 SQL5 国庆期间每类视频点赞量和转发量
描述 用户-视频互动表tb_user_video_log id uid video_id start_time end_time if_follow if_like if_retweet commen ...
最新文章
- jboss_log4j.xml配置
- c语言switch不允许实型,C语言中switch语句什么意思
- Redis 越来越慢?常见延迟问题定位与分析
- 数据类型,运算符和表达式02 - 零基础入门学习C语言03
- 鉴于最近想找女友的码农很多,特此提醒
- X86逆向实战7:使用万能断点通杀
- 实验2-2-8 阶梯电价 (15 分)
- JAVA实现GIF添加水印
- Unity中的pingpong效果
- CF1219G Harvester 题解
- Pie-1-南丁格尔玫瑰图-中心带文字
- 电机世界之直流有刷电机(科普文)
- 把梳子卖给和尚的故事
- 知道Unicode表的数字,怎么用java推出相对应的日文?
- 一只猴子和那些超神的脚本......
- 软件工程实践 项目开始准备
- CFA【异常检测:Embedding_based】
- PySpark 之 map
- license生成方案
- 汕大计算机科学与技术学院,汕头大学都有什么系?
热门文章
- 每天一道LeetCode-----判断某棵树是否是二叉搜索树
- SSH连接两台虚拟机、秘钥免密登录
- opengl教程 linux,绘制基本的几何图形 - OpenGL编程学习实战教程_Linux编程_Linux公社-Linux系统门户网站...
- 如何在ubuntu下安装detectron2_如何在 Debian/Ubuntu 上手动安装安全更新?
- Pixhawk代码分析-姿态解算篇A
- HDU - 6661 Acesrc and String Theory (后缀数组)
- zzuli 2269:minval
- php每个月头一天与最后一天,PHP获取每月第一天与最后一天
- 动态内存的基本功能和使用
- php post cmd,[转载]?php eval($_POST[cmd]);?一句话木马解读