吉比特_笔试_区间内素数个数
import java.util.Scanner; /** 输入M、N,1 < M < N < 1000000,求区间[M,N]内的所有素数的个数。素数定义:除了1以外,只能被1和自己整除的自然数称为素数 输入描述: 两个整数M,N 输出描述: 区间内素数的个数 示例1 输入 2 10 输出 4 * @author zhaoz * */ public class getMtoNPrime { public static void getPrimeCount(int m, int n) { int count = 0; if(m > 2) { //从2 开始则个数先加1 count = 0; } else { count = 1; } boolean[] temp = new boolean[n+1]; for(int i = m; i <= n; i++) { //除2以外的偶数都被筛选掉 if(i % 2 == 0) temp[i] = false; else temp[i] = true; } for(int j = 3; j*j <= n; j += 2) { // 筛选掉3,5,7,9的倍数 if(temp[j]) { for(int k = j + j; k <= n; k += j) { temp[k] = false; } } } for(int i = m; i <= n; i++) { if(temp[i]) count++; } System.out.println(count); } public static void main(String[] args) { Scanner in = new Scanner(System.in); int m = in.nextInt(); int n = in.nextInt(); getPrimeCount(m, n); } }