輸出1~200之間所有的素數
阿新 • • 發佈:2019-01-11
首先,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迴圈的遍歷次數,提高程式碼效率
方法三:把判斷是否是素數重新寫一個方法裡,然後在main方法中呼叫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); } } }
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; } }