1003:数素数 (20)

时间限制 1000 ms 内存限制 32768 KB 代码长度限制 100 KB 判断程序 Standard (来自 小小)

题目描述

令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)相关推荐

  1. Java算法:华为机试算法(下),华为算法Java版,牛客网华为算法73~108题

    接上篇:Java算法:华为机试算法(中),华为算法Java版,牛客网华为算法55~72题   HJ73 计算日期到天数转换 计算日期到天数转换 题目描述 根据输入的日期,计算是这一年的第几天.. 测试 ...

  2. 牛客网 PTA乙级真题 1003 数素数

    数素数 (20) 时间限制 1000 ms 内存限制 32768 KB 代码长度限制 100 KB 判断程序 Standard (来自 小小) 题目描述 令Pi表示第i个素数.现任给两个正整数M &l ...

  3. 牛客网SQL大厂面试真题(二)

    SQL25 某宝店铺的SPU数量 SELECT style_id, COUNT(1) AS SPU_num FROM product_tb GROUP BY style_id ORDER BY SPU ...

  4. Java算法:牛客网腾讯笔试真题算法Java版1-11题

    题号 题目 知识点 难度 通过率 QQ1 生成格雷码 递归 简单 22.61%QQ2 微信红包 模拟 简单 25.61%QQ3 编码 字符串模拟 中等 26.60%QQ4 游戏任务标记 模拟 中等 3 ...

  5. Java算法:牛客网字节跳动笔试真题算法Java版1-27题

    题号 题目 知识点 难度 通过率 ZJ1 附加题 动态规划数组 中等 16.45% ZJ2 编程题1 贪心 中等 11.65% ZJ3 编程题2 字符串贪心 中等 29.30% ZJ4 附加题 递归模 ...

  6. Java算法:牛客网拼多多笔试真题算法Java版1-13题

    题号 题目 知识点 难度 通过率 PDD1 最大乘积 贪心模拟 中等 14.45%PDD2 大整数相乘 模拟 中等 27.32%PDD3 六一儿童节 贪心 中等 24.74%PDD4 迷宫寻路 模拟 ...

  7. 牛客网SQL大厂面试真题(一)

    SQL1 各个视频的平均完播率 SELECT log.video_id, ROUND(SUM(IF(TIMESTAMPDIFF(SECOND, log.start_time, log.end_time ...

  8. 牛客网 SQL大厂面试真题篇 SQL2 平均播放进度大于60%的视频类别

    描述 用户-视频互动表tb_user_video_log id uid video_id start_time end_time if_follow if_like if_retweet commen ...

  9. 牛客网 SQL大厂面试真题篇 SQL5 国庆期间每类视频点赞量和转发量

    描述 用户-视频互动表tb_user_video_log id uid video_id start_time end_time if_follow if_like if_retweet commen ...

最新文章

  1. jboss_log4j.xml配置
  2. c语言switch不允许实型,C语言中switch语句什么意思
  3. Redis 越来越慢?常见延迟问题定位与分析
  4. 数据类型,运算符和表达式02 - 零基础入门学习C语言03
  5. 鉴于最近想找女友的码农很多,特此提醒
  6. X86逆向实战7:使用万能断点通杀
  7. 实验2-2-8 阶梯电价 (15 分)
  8. JAVA实现GIF添加水印
  9. Unity中的pingpong效果
  10. CF1219G Harvester 题解
  11. Pie-1-南丁格尔玫瑰图-中心带文字
  12. 电机世界之直流有刷电机(科普文)
  13. 把梳子卖给和尚的故事
  14. 知道Unicode表的数字,怎么用java推出相对应的日文?
  15. 一只猴子和那些超神的脚本......
  16. 软件工程实践 项目开始准备
  17. CFA【异常检测:Embedding_based】
  18. PySpark 之 map
  19. license生成方案
  20. 汕大计算机科学与技术学院,汕头大学都有什么系?

热门文章

  1. 每天一道LeetCode-----判断某棵树是否是二叉搜索树
  2. SSH连接两台虚拟机、秘钥免密登录
  3. opengl教程 linux,绘制基本的几何图形 - OpenGL编程学习实战教程_Linux编程_Linux公社-Linux系统门户网站...
  4. 如何在ubuntu下安装detectron2_如何在 Debian/Ubuntu 上手动安装安全更新?
  5. Pixhawk代码分析-姿态解算篇A
  6. HDU - 6661 Acesrc and String Theory (后缀数组)
  7. zzuli 2269:minval
  8. php每个月头一天与最后一天,PHP获取每月第一天与最后一天
  9. 动态内存的基本功能和使用
  10. php post cmd,[转载]?php eval($_POST[cmd]);?一句话木马解读