牛客网 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 43
47 53 59 61 67 71 73 79 83 89
97 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;
else
System.out.print(" ");
}
int i = 3;
while(true){
if(f(i)) { //素数判断
count++; //素数数目+1
if(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;
}
}
牛客网 PAT 算法历年真题 1003: 数素数 (20)的更多相关文章
- 牛客网 PAT 算法历年真题 1012 : D进制的A+B (20)
D进制的A+B (20) 时间限制 1000 ms 内存限制 32768 KB 代码长度限制 100 KB 判断程序 Standard (来自 小小) 题目描述 输入两个非负10进制整数A和B(< ...
- 牛客网 PAT 算法历年真题 1009 : 1019. 数字黑洞 (20)
1019. 数字黑洞 (20) 时间限制 1000 ms 内存限制 32768 KB 代码长度限制 100 KB 判断程序 Standard (来自 小小) 题目描述 给定任一个各位数字不完全相同的4 ...
- 牛客网 PAT 算法历年真题 1011 : 个位数统计 (15)
个位数统计 (15) 时间限制 1000 ms 内存限制 32768 KB 代码长度限制 100 KB 判断程序 Standard (来自 小小) 题目描述 给定一个k位整数N = dk-1*10k- ...
- 牛客网 PAT 算法历年真题 1010 : 月饼 (25)
月饼 (25) 时间限制 1000 ms 内存限制 32768 KB 代码长度限制 100 KB 判断程序 Standard (来自 小小) 题目描述 月饼是中国人在中秋佳节时吃的一种传统食品,不同地 ...
- 牛客网 PAT 算法历年真题 1008 : 锤子剪刀布 (20)
锤子剪刀布 (20) 时间限制 1000 ms 内存限制 32768 KB 代码长度限制 100 KB 判断程序 Standard (来自 小小) 题目描述 大家应该都会玩“锤子剪刀布”的游戏:现给出 ...
- 牛客网 PAT 算法历年真题 1002 :数字分类 (20)
1002 :数字分类 (20) 时间限制 1000 ms 内存限制 32768 KB 代码长度限制 100 KB 判断程序 Standard (来自 小小) 题目描述 给定一系列正整数,请按要求对数字 ...
- 牛客网 PAT 算法历年真题 1001 : A+B和C (15)
1001 : A+B和C (15) 时间限制 1000 ms 内存限制 32768 KB 代码长度限制 100 KB 判断程序 Standard 题目描述 给定区间[-2的31次方, 2的31次方]内 ...
- 牛客网剑指offer刷题总结
二维数组中的查找: 题目描述:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数. 两 ...
- 牛客网PAT乙级(Basic Level)真题-组个最小数 (20)
组个最小数 (20) 时间限制 1000 ms 内存限制 32768 KB 代码长度限制 100 KB 判断程序 Standard (来自 小小) 题目描述 给定数字0-9各若干个.你可以以任意顺序排 ...
随机推荐
- React native 开发如何使用阿里的icon
首先是通过Text来引用的 但是区分是 familay <Text style={{fontFamily:'iconfont', fontSize:fontsize, color:this.st ...
- ado_基本连接操作【四】
using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Data. ...
- C++.可变参数_ZC测试
ZC:环境: Win7 x64(旗舰版),Microsoft Visual Studio 2010(版本 10.0.30319.1 RTMRel, Microsoft .NET Framework(版 ...
- JS异步函数 返回值
1. js 异步的几种情况 : 1.1 异步操作由浏览器内核的 webcore 来执行: onclick 由浏览器内核的 DOM Binding 模块来处理,当事件触发的时候,回调函数会立即添加到任 ...
- split函数
b="aa,:bb:c,c"a1,a2,a3=b.split(":") #以:为分隔符,分成3个字符串
- MATLAB程序控制结构
- MySQL ICP(Index Condition Pushdown)特性
一.SQL的where条件提取规则 在ICP(Index Condition Pushdown,索引条件下推)特性之前,必须先搞明白根据何登成大神总结出一套放置于所有SQL语句而皆准的where查询条 ...
- spring cloud: zuul(四): 正则表达式匹配其他微服务(给其他微服务加版本号)
spring cloud: zuul(四): 正则表达式匹配其他微服务(给其他微服务加版本号) 比如我原来有,spring-boot-user微服务,后台进行迭代更新,另外其了一个微服务: sprin ...
- linux 如何释放缓存
操作: 同步 sync 释放所有缓存 echo 3 > /proc/sys/vm/drop_caches 原理: sync 将所有未写的系统缓冲区写到磁盘中,包含已修改的 i-node.已延迟的 ...
- c# HTML中提取图片地址
public class HtmlHelper { /// <summary> /// HTML中提取图片地址 /// </summa ...