当前位置:首页 > 开发 > 编程语言 > Java > 正文

java-打印不大于N的质数

发表于: 2012-01-13   作者:bylijinnan   来源:转载   浏览:
摘要: public class PrimeNumber { /** * 寻找不大于N的质数 */ public static void main(String[] args) { int n=100; PrimeNumber pn=new PrimeNumber(); pn.printPrimeNumber(n); System.out.print

public class PrimeNumber {

	/**
	 * 寻找不大于N的质数
	 */
	public static void main(String[] args) {
		int n=100;
		PrimeNumber pn=new PrimeNumber();
		pn.printPrimeNumber(n);
		System.out.println();
		pn.printPrimeNumber2(n);
	}

	public void printPrimeNumber(int n){
		int i=2;
		while(i<=n){
			if(isPrimeNumber(i)){
				System.out.print(i+",");
			}
			i++;
		}
	}
	//Solution 1
	//it's not a good solution
	public boolean isPrimeNumber(int x){
		boolean re=true;
		for(int i=2;i*i<=x;i++){
			if(x%i==0){
				re=false;
				break;
			}
		}
		return re;
	}
	
	//Solution 2
	//i--> 2 to sqrt(n)
	//delete i*2,i*3.....i*sqrt(n)
	public void printPrimeNumber2(int n){
		boolean[] a=new boolean[n+1];
		for(int i=2;i<=n;i++){
			a[i]=true;
		}
		for(int i=2;i*i<=n;i++){
			for(int j=i;j*i<=n;j++){
				a[j*i]=false;
			}
		}
		for(int i=0;i<n;i++){
			if(a[i]){
				System.out.print(i+",");
			}
		}
	}
}

java-打印不大于N的质数

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
算法如下: #include<stdio.h> #include<math.h> void Sieve(int n) { int p,j,i; int
质数又称素数,是数学中最常见的数字,即是指除1和它本身以外没有其它约数的数字 如 1 2 3 5 7 11 1
我的算法思想和实现方式都在代码和注释当中呢,这样的方式确实使算法复杂度降低一个等级,很好啊。
我的算法思想和实现方式都在代码和注释当中呢,这样的方式确实使算法复杂度降低一个等级,很好啊。
编码学习记录: 输入包含N个自然数(N<10000),每个数不大于15000(可以重复),选择其中一些数
算法分析: 1.将此矩阵分解为一个一个的圈,如下图,1-20可以看成一个圈,21-32是一个圈,33-36也是
蓄水池抽样(Reservoir Sampling) 相关证明可看这个链接: http://www.cnblogs.com/HappyAngel/arch
打印从n个数种选取m个数的组合数 方法一:利用递归思想。 //从后往前选取,选定位置i后,再在前i-1
前几天看一个故事: 1970年,赞比亚的玛丽·尤肯达修女给当时NASA太空航行中心的科学副总监恩斯特·史
求1~N之间的所有质数 1、试除法: 要判断x是否为质数,主要看是否x能被另外一个质数整除 1)最直接
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号