import java.util.Scanner; public class Eratosthenes { static void getPrimes(int num){ int []arr = new int[num +1];//長度爲11的數組,可以存下表爲0-10的數組,因此取10之內的數組,須要申請11長度的數組 for (int i = 1; i <= num; i++){ arr[i] = i; } arr[1] = 0;//1不是素數,排除1 for (int i = 2; i < Math.sqrt(num); i++){ for (int j = i+1; j < num; j++){ if (arr[j] != 0 && arr[j]%i == 0){ arr[j] = 0; } } } for (int i = 0; i < num; i++){ if (arr[i] != 0){ System.out.printf(arr[i]+"\t"); } } } public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.printf("請輸入查詢值:"); int num = scanner.nextInt(); getPrimes(num); } } =============================== import java.util.Scanner; public class CheckPrime { static boolean isCheck(int x){ for (int i = 2; i < x; i++){ // for (int i = 2; i <= Math.sqrt(x); i++){ if (x % 2 == 0){ return false; } } return true; } public static void main(String[] args) { Scanner scanner = new Scanner(System.in); int x = scanner.nextInt(); System.out.println(isCheck(x)); } } /** * 2是素數,1不是素數 * * 排除異常樹 * if(n < 2) return false; * * 偶數必定不適素數 * if(n%2==0) return false; * * 定理: 若是n不是素數, 則n有知足1< d<=sqrt(n)的一個因子d. 證實: 若是n不是素數, 則由定義n有一個因子d知足1< d< n. 若是d大於sqrt(n), 則n/d是知足1< n/d<=sqrt(n)的一個因子. sqrt()是開方,開方的兩個數是相等的,4*4=14,若是一個數大約平方根,那麼另外一個數必定小於平方根,才能知足兩者的乘積等於兩個平方根的積 一、素數及相關 素數,又稱質數,在一個大於1的天然數中,除了1和此整數自身以外,不能被其餘天然數整除的數。 比1大但不是素數的數稱爲合數。 1和0既不是素數,也不是合數。 算術基本定理證實每一個大於1的正整數均可以寫成素數的乘積,而且這種乘積的形式是惟一的。 */