当前位置:首页 > 开发 > 编程语言 > 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

    震惊

    震惊

版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号