吉比特_笔试_区间内素数个数

Posted 55329

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了吉比特_笔试_区间内素数个数相关的知识,希望对你有一定的参考价值。

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);
	}
}

  

以上是关于吉比特_笔试_区间内素数个数的主要内容,如果未能解决你的问题,请参考以下文章

区间素数个数(Min_25筛)

吉比特笔试题解

筛素数,求区间内素数个数

区间内素数的个数

数论_埃氏筛法(求区间内多少素数)

洛谷 P1835 素数密度_NOI导刊2011提高(04)题解