java 基础写法 输入一个正整数n,求第n小的质数。 n的范围一个不超过10000的正整数n。
时间: 2023-11-01 12:33:09 浏览: 107
可以使用质数筛选法来解决这个问题。具体实现如下:
```java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
// 标记质数的数组
boolean[] isPrime = new boolean[1000000];
for (int i = 2; i < isPrime.length; i++) {
isPrime[i] = true;
}
// 质数筛选
for (int i = 2; i <= Math.sqrt(isPrime.length); i++) {
if (isPrime[i]) {
for (int j = i * i; j < isPrime.length; j += i) {
isPrime[j] = false;
}
}
}
// 统计第n小的质数
int count = 0;
for (int i = 2; i < isPrime.length; i++) {
if (isPrime[i]) {
count++;
if (count == n) {
System.out.println(i);
break;
}
}
}
}
}
```
首先读入正整数n,然后定义一个长度为1000000的boolean数组isPrime,用于标记每个数是否为质数。在循环中,将isPrime数组中的所有元素初始化为true。接着使用质数筛选法,对2到1000000之间的所有数进行筛选,将非质数标记为false。
最后,定义一个计数器count,遍历isPrime数组,统计其中的质数个数,当质数个数等于n时,输出当前的数值,即为第n小的质数。
阅读全文