介紹:
判斷一個數是否爲素數,並輸出多少以內的素數。
思路:
1.素數就是大於1的,並且只能被1和自己本身整除的數叫素數。
2.那麼只需要從2循環到10就可以了。
上代碼:
package 初級;
import java.util.Scanner;
public class 判斷素數 {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.println("請輸入你要判斷的數:");
int num = input.nextInt();
System.out.println(num+"是否爲素數:"+judge(num));
System.out.println("請輸入輸出多少以內的素數:");
int len = input.nextInt();
for(int i=0;i<len;i++){
if(judge(i)){
System.out.print(i+",");
}
}
}
private static boolean judge(int n){
if(n<=3){
return n>1;
}
for(int i=2;i<10;i++){
if(n%i == 0 && n!=i){
return false;
}
}
return true;
}
}
可能有人會問?爲什麼從2-10,爲啥不是從2-n呢?
因爲:如果一個數能夠被其他數整除的話,那麼肯定是可以被2-10以內的數整除的。所以只需要判斷能否被2-10之間的數整除就行了,不需要再一直循環到n.這樣的話,這個算法的時間複雜度就是O(1),是常數級。
我也查了網上的求多少以內素數的算法,可是沒看到和我一樣的,我個人覺得自己的邏輯是對的,不知道哪裏有錯誤。希望大家指教。提點一二。謝謝