程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> Java完成求小於n的質數的3種辦法

Java完成求小於n的質數的3種辦法

編輯:關於JAVA

Java完成求小於n的質數的3種辦法。本站提示廣大學習愛好者:(Java完成求小於n的質數的3種辦法)文章只能為提供參考,不一定能成為您想要的結果。以下是Java完成求小於n的質數的3種辦法正文


質數概念

質數,又稱素數,指在一個年夜於1的天然數中,除1和此整數本身外,沒法被其他天然數整除的數(也可界說為只要1和自己兩個因數的數)。
最小的素數是2,也是素數中獨一的偶數;其他素數都是奇數。質數有沒有限多個,所以不存在最年夜的質數。

一:依據界說去求解:
也是最笨的方法,效力比擬低:

package test.ms;

public class FindPrime {
	 // find the prime  between 1 to 1000;
	public static void main(String[] args) {
		 printPrime(1000);
	}
	public static void  printPrime(int n){
		
		for(int i = 2; i < n ; i++){
			
			int count = 0;
			
			for(int j = 2 ; j<=i; j++){
				
				if(i%j==0){
					count++;
				}
				if(j==i & count == 1){
					System.out.print(i+" ");
				}
				if(count > 1){
					break;
				}
			}
			
			
		}
		
	}

}

2:平方根:

package test.ms;

public class Prime { 
	
	public static void main(String[] args) {
		
		for(int j = 2; j<1000; j++){
			if(m(j)){
				System.out.print(j+" ");
			}
		}
	}
	
	public static boolean  m(int num){
	
		for(int j = 2; j<=Math.sqrt(num);j++){
			if(num%j == 0){
				return false;
			}
		}
		
		return true;
	}

}

3:找紀律(摘自一個服裝論壇t.vhao.net評論辯論)

最小的素數是2,也是素數中獨一的偶數;其他素數都是奇數。質數有沒有限多個,所以不存在最年夜的質數。

package test.ms;

import java.util.ArrayList;
import java.util.List;

public class Primes {
		 
	  public static void main(String[] args) {
	  	
	    // 求素數
	    List<Integer> primes = getPrimes(1000);
	 
	    // 輸入成果
	    for (int i = 0; i < primes.size(); i++) {
	      Integer prime = primes.get(i);
	      System.out.printf("%8d", prime);
	      if (i % 10 == 9) {
	        System.out.println();
	      }
	    }
	  }
	 
	  /**
	   * 求 n 之內的一切素數
	   *
	   * @param n 規模
	   *
	   * @return n 之內的一切素數
	   */
	  private static List<Integer> getPrimes(int n) {
	    List<Integer> result = new ArrayList<Integer>();
	    result.add(2);
	 
	    for (int i = 3; i <= n; i += 2) {
	      if (!divisible(i, result)) {
	        result.add(i);
	      }
	    }
	 
	    return result;
	  }
	 
	  /**
	   * 斷定 n 能否能被整除
	   *
	   * @param n   要斷定的數字
	   * @param primes 包括素數的列表
	   *
	   * @return 假如 n 能被 primes 中任何一個整除,則前往 true。
	   */
	  private static boolean divisible(int n, List<Integer> primes) {
	    for (Integer prime : primes) {
	      if (n % prime == 0) {
	        return true;
	      }
	    }
	    return false;
	  }
	}

第一種和第二種都是很簡略的辦法:
第三種辦法解釋了一個質數的特征:在一切質數中,只要2是偶數。
假如一個數可以或許被它之前的質數整除,那末這個數不是質數。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved