1013. 数素数 (20)
来源:互联网 发布:永久免费php空间 编辑:程序博客网 时间:2024/05/16 14:17
令Pi表示第i个素数。现任给两个正整数M <= N <= 104,请输出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
import java.util.*;public class Main { //判断素数static boolean isPrime (int num) {for(int i=2; i<=Math.sqrt(num); ++i) {if(num % i == 0)return false;}return true;}public static void main(String[] args) {Scanner in = new Scanner(System.in);int n = in.nextInt(), m = in.nextInt();int num=2, cnt1 = 0,cnt2=0;//cnt1用来记录总的素数的个数,cnt2用来记录要打印的素数的个数 while(true){ if(isPrime(num)){ cnt1++; if(cnt1>=n&&cnt1<m){ cnt2++; if(cnt2%10==0){ System.out.print(num); System.out.println();} else System.out.print(num+" "); } if(cnt1==m){ System.out.print(num); System.out.println(); break; } } num++; }}}
反思:解决此题时,可能会因为思考第一万个素数大概有多大呢,第一反应可能是求出一个素数的数组,然后输出相应的元素,但是此方法过于暴力,再来看一下,解题的突破点在于个数,所以我们只需要一个循环并且设置跳出条件为个数临界值即可,同时需要记录当前满足条件的素数个数来实现打印的要求!
其实使用素数筛选法即可
阅读全文
0 0
- 1013. 数素数 (20)
- 1013. 数素数 (20)
- 1013. 数素数 (20)
- 1013. 数素数 (20)
- 1013. 数素数 (20)
- 1013. 数素数 (20)
- 1013. 数素数 (20)
- 1013. 数素数 (20)
- 1013. 数素数 (20)
- 1013. 数素数 (20)
- 1013. 数素数 (20)
- 1013. 数素数 (20)
- 1013. 数素数 (20)
- 1013. 数素数 (20)
- 1013. 数素数 (20)
- 1013. 数素数 (20)
- 1013. 数素数 (20)
- 1013. 数素数 (20)
- shell命令--mv
- New一个子类对象的时候是否创建了父类的对象
- Objective-C Runtime 运行时:类与对象
- leetcode 482. License Key Formatting
- laravel5 知识点备忘录
- 1013. 数素数 (20)
- 使用过滤器解决全站中文乱码问题
- 一个页面从输入URL 到页面加载显示完成,这个过程中都发生了什么?
- 正则表达式匹配英文和法文
- Linux下Tomcat的安装
- 在Intellij IDEA中导入包
- (.DS_Store)避免多人提交代码到GitHub上起冲突
- NYOJ 14 会场安排问题
- 2017年07月29日