第1个素数是2,第2个素数是3,...
求第100002(十万零二)个素数
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt(); int[] arr = new int[n + 1]; for(int i = 2; i <= n; i ++) { arr[i] = 1; } for(int i = 2; i * i <= n; i ++) { //可以只用根号n之前的数字去筛选 if(arr[i] == 1) { //不加判断也是可以的,增加复杂度了,我们只需要在我们所认为的“素数”中筛选就可以了, 每个合数必有质因子 for(int j = i * i; j <= n; j += i) { //比如j = i * k(k < i),那么j肯定被k筛掉了 arr[j] = 0; } } } int k = 1; for(int i = 2; i <= n; i ++) { if(arr[i] == 1) { if(k == 100002) { System.out.println(i); } k ++; } } } }