`
Scliu123
  • 浏览: 39932 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

JDK_实例(求指定范围内的质数)

阅读更多
package book.arrayset;

import java.util.Arrays;
/**
 * 求指定范围内的质数
 */
public class PrimeNumber {
	/**
	 * 显示range范围内的质数
	 * @param range
	 */
	public void showPrimeNumber(int range){
		boolean[] primes = this.sieve(range);
		int number = 0;
		if (primes != null){
			int size = primes.length;
			System.out.println("范围在" + range + "内的质数个数有:");
			for (int i=1; i<size; i++){
				if (primes[i]){
					System.out.print(i + "  ");
					//每输出10个质数换行
					//number先加1,再跟10做模运算,如果余数为0,则换行
					if (++number % 10 == 0){
						System.out.println();
					}
				}
			}
			System.out.println();
		} 
		System.out.println("一共有" + number + "个");
	}
	/**
	 * 筛选法求质数
	 * @param range
	 * @return
	 */
	private boolean[] sieve(int range){
		if (range <= 0){
			System.out.println("求质数的范围range必须大于0!");
			return null;
		} 
		//用一个布尔数组标示是否为质数,如果下标值为质数,那么该下标值对应的数组元素的值为true。
		//如2是质数,isPrime[2] = true
		//因为数组是下标是从0开始的,所以这里新建的数组大小为range+1
		boolean[] isPrime = new boolean[range + 1];
		//1不是质数
		isPrime[1] = false;
		//用Arrays的fill方法将数组下标从2到range+1之间的元素的值都赋为true
		Arrays.fill(isPrime, 2, range+1, true);
		//上面一句代码等价于下面被注释的代码
//		for (int i=2; i< range+1; i++){
//			isPrime[i] = true;
//		}
		//Math的sqrt方法用于求开方
		int n = (int)Math.sqrt(range);
		for (int i=1; i<=n; i++){
			if (isPrime[i]){
				//如果i是质数,那么i的倍数不是质数
				for (int j=2 * i; j<=range; j+=i){
					isPrime[j] = false;
				}
			}
		}
		return isPrime;
	}   
	public static void main(String[] args) {
		int range = 200;
		PrimeNumber test = new PrimeNumber();
		test.showPrimeNumber(range);
	}
}

 

分享到:
评论

相关推荐

    java范例开发大全

    实例100 输出指定范围的素数 128 实例101 我出现了几次 129 实例102 算术表达式求值器 129 实例103 字符串对齐调整器 137 实例104 字符串的加密 139 实例105 使用正则表达式验证电话号码的格式 141 6.2 字符串缓存类...

    Java范例开发大全 (源程序)

     实例100 输出指定范围的素数 128  实例101 我出现了几次 129  实例102 算术表达式求值器 129  实例103 字符串对齐调整器 137  实例104 字符串的加密 139  实例105 使用正则表达式验证电话号码的格式 141...

    java范例开发大全(pdf&源码)

    实例100 输出指定范围的素数 128 实例101 我出现了几次 129 实例102 算术表达式求值器 129 实例103 字符串对齐调整器 137 实例104 字符串的加密 139 实例105 使用正则表达式验证电话号码的格式 141 6.2 字符串缓存类...

    java范例开发大全源代码

     实例100 输出指定范围的素数 128  实例101 我出现了几次 129  实例102 算术表达式求值器 129  实例103 字符串对齐调整器 137  实例104 字符串的加密 139  实例105 使用正则表达式验证电话号码的...

    Java范例开发大全(全书源程序)

    实例100 输出指定范围的素数 128 实例101 我出现了几次 129 实例102 算术表达式求值器 129 实例103 字符串对齐调整器 137 实例104 字符串的加密 139 实例105 使用正则表达式验证电话号码的格式 141 6.2 字符...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    实例002 把JDK工具包安装到指定磁盘 4 实例003 设置JDK的环境变量 6 实例004 验证Java开发环境 7 实例005 下载并安装JRE执行环境 8 实例006 编程输出星号组成的等腰三角形 9 1.2 开发工具 11 实例007 下载最新的...

    java 基础的课堂笔记整理

    2.3.1、使用swith case语句判断 一定分数范围内的等级。 4 2.3.2、 求 100 以内的整数 的奇数和。 4 2.3.3、。。。。。。。。。。。。。。。。。。。。。。偶数和。 5 2.4 实例演示: 6 2.4.1//判断奇偶数算法。 6 ...

    Java开发技术大全(500个源代码).

    示例描述:本章演示如何开始使用JDK进行程序的开发。 HelloWorldApp.java 第一个用Java开发的应用程序。 firstApplet.java 第一个用Java开发的Applet小程序。 firstApplet.htm 用来装载Applet的网页文件 第2章 ...

Global site tag (gtag.js) - Google Analytics