求出100以內的素數(java實現)


j

package test1;
//2018/11/30
//求100以內的所有素數
public class Main10 {
		public static void main(String[] args){
			Main10 test=new Main10();
			System.out.println("100以內的素數:");
			int count=0;
			for(int i=2;i<100;i++) {
				if(test.isPrimeNumber(i)==true) {
					System.out.print(i+" ");
					count++;
					if(count%10==0) {
						System.out.print("\n");
					}
				}
			}	
		}
		
		public boolean isPrimeNumber(int number){
			boolean flag=true;
			if(number<=0) {
				throw new IllegalArgumentException("number是不合法的參數!");
			}
			
			for(int i=2;i<=Math.sqrt(number);i++) {
				if(number%i==0) {
					flag=false;
					break;
				}
			}
			return flag;
		}
}

 

下面是另一種

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
//檢驗一個數是不是素數,如果所有小於它的素數都不能將它整除,那么它就是素數
public class Main11 {
		public static void main(String[] args) {
			List<Integer> primes=getPrimes(100);
			
			System.out.println("100以內素數如下:");
			
			for(int i=0;i<primes.size();i++) {
				Integer prime=primes.get(i);
				System.out.print(prime+" ");
				if(i%10==0) {//每10個換行
					System.out.println();
				}
			}
		}
		
		/*
		 * 求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) {  //遍歷,減少循環次數,步長為2
				if(!divisble(i,result)) {  //判斷是否有素數能被整除
					result.add(i);     //如果不能整除,加入列表List
				}
			}
			return result;  //返回列表list
		}
		
		
		/*
		 * 判斷n能否能被整除
		 * 
		 */
		private static boolean divisble(int n,List<Integer> primes) {
			for(Integer prime:primes) {  //遍歷列表List
				if(n % prime == 0) {
					return true;
				}
				if(prime>=Math.sqrt(n))   //如果超過平方根,還沒找到整除,退出循環
					break;
				
			}
			return false;
		}
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM