1. 程式人生 > >輸出1~200之間所有的素數

輸出1~200之間所有的素數

首先,1既不是素數也不是合數

方法一:簡單方法

public class Prime {
	public static void main(String[] args) {
		//1既不是素數也不是合數
		for (int i = 2; i <= 200; i++) {       //外層被除數
			boolean b = true;             //假設初始時都為素數
			for (int j = 3; j < i; j++) {      //內層除數
				if(i % j == 0){           //如果餘數為0
					b = false;            //則不是素數
					break;                //跳出迴圈
				}
			}
			if(b)
				System.out.println(i);
		}
	}
}

方法二:優化程式碼,減少for迴圈的遍歷次數,提高程式碼效率
public class Prime {
	public static void main(String[] args) {
		System.out.println("2");
		for (int i = 3; i <= 200; i = i + 2) {       //外層被除數 ,因為偶數不可能是素數,所以直接+2
			boolean b = true;                        //假設初始時都為素數
			for (int j = 3; j < Math.sqrt(i); j++) { //內層除數,利用Math.sqrt求i的平方根可以減少迴圈次數
				if(i % j == 0){           //如果餘數為0
					b = false;            //則不是素數
					break;                //跳出迴圈
				}
			}
			if(b)
				System.out.println(i);
		}
	}
}
方法三:把判斷是否是素數重新寫一個方法裡,然後在main方法中呼叫
public class Prime {
	public static void main(String[] args) {
		for (int i = 2; i <= 200; i++) {
			if(isPrime(i))
			System.out.println(i);
		}
	}
	public static boolean isPrime(int p){
		for (int j = 2; j <= Math.sqrt(p); j++) {
			if(p % j == 0)
				return false;
		}
		return true;
	}
}