⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 primenumber.java

📁 JEECMS是JavaEE版网站管理系统(Java Enterprise Edition Content Manage System)的简称。 基于java技术开发
💻 JAVA
字号:
package com.ponyjava.common.util;

import java.util.HashMap;
import java.util.Map;

public class PrimeNumber {
	private static final Map<Integer, int[]> primeMap = new HashMap<Integer, int[]>();

	/**
	 * 查找下一个素数
	 * 
	 * @param max
	 *            最大的数
	 * @param pre
	 *            上一个素数
	 * @return 如果没有下一个则返回0;如果上一个素数不在范围内,返回-1。
	 */
	public static int getNextPrime(int max, int pre) {
		int[] primeArr = primeMap.get(max);
		if (primeArr == null) {
			primeArr = generatorPrimes(max);
			primeMap.put(max, primeArr);
		}
		return getNext(primeArr, pre);
	}

	/**
	 * 寻找下一个
	 * 
	 * @param primeArr
	 * @param pre
	 * @return
	 */
	private static int getNext(int[] primeArr, int pre) {
		for (int i = 0; i < primeArr.length; i++) {
			if (pre == primeArr[i]) {
				if (primeArr.length > i + 1) {
					return primeArr[i + 1];
				} else {
					return 0;
				}
			}
		}
		return -1;
	}

	/**
	 * 创建素数
	 * 
	 * @param max
	 * @return
	 */
	private static int[] generatorPrimes(int max) {
		int size = max + 1;
		int[] allArr = new int[size];
		// 0和1都不是素数
		allArr[0] = 1;
		allArr[1] = 1;
		// 挖空
		for (int i = 2; i < Math.sqrt(size - 1); i++) {
			if (allArr[i] == 0) {
				for (int j = 2; j <= ((size - 1) / i); j++) {
					allArr[i * j] = 1;
				}
			}
		}
		// 素数数量
		int primeCount = 0;
		for (int i = 0; i < allArr.length; i++) {
			primeCount += allArr[i];
		}
		primeCount = size - primeCount;
		// 素数数组
		int[] primeArr = new int[primeCount];
		int index = 0;
		for (int i = 0; i < allArr.length; i++) {
			if (allArr[i] == 0) {
				primeArr[index++] = i;
			}
		}
		return primeArr;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -