【面試干貨】找出一個偶數能夠表示為兩個素數之和的所有可能情況
- 1、實現思想
- 2、代碼實現
💖The Begin💖點點關注,收藏不迷路💖 |
1、實現思想
功能:通過循環遍歷奇數,找出一個大于等于 6 的偶數能夠表示為兩個素數之和的所有可能情況。
- 首先,通過
Scanner
類讀取用戶輸入的偶數,并進行驗證確保輸入的數值滿足要求。 - 然后,通過循環遍歷奇數
i
(從 3 開始遞增至n/2
),判斷i
和(n - i)
是否都是素數。如果是素數,則輸出符合要求的素數表示。 - 最后,通過靜態方法
isPrime
判斷一個數是否是素數,若滿足條件返回true
,否則返回false
。
2、代碼實現
代碼1:
package csdn; import java.util.Scanner; public class SumOfPrimes { public static void main(String[] args) { // 主函數Scanner s = new Scanner(System.in); // 創建一個 Scanner 對象用于讀取輸入int n; // 定義變量 n,用于存儲用戶輸入的偶數do {System.out.print("請輸入一個大于等于 6 的偶數:"); // 輸入大于等于 6 的偶數n = s.nextInt(); // 從控制臺讀取輸入的整數值,并賦給變量 n} while (n < 6 || n % 2 != 0); // 判斷輸入是否是大于等于 6 的偶數,如果不是,則重新輸入for (int i = 3; i <= n / 2; i += 2) { // 循環遍歷從 3 到 n/2 的奇數if (isPrime(i) && isPrime(n - i)) { // 判斷 i 和 (n-i) 是否都是素數System.out.println(n + " = " + i + " + " + (n - i)); // 輸出符合條件的素數表示}}}// 判斷是否是素數的函數public static boolean isPrime(int a) { // 定義一個名為 "isPrime" 的靜態方法,用于判斷一個數是否是素數if (a == 3) { // 如果 a 等于 3,則是素數return true;}for (int i = 2; i <= Math.sqrt(a); i++) { // 循環遍歷從 2 到 sqrt(a) 的數if (a % i == 0) { // 如果 a 能被 i 整除,則不是素數return false;}}return true; // 是素數}
}
代碼2:
package csdn;import java.util.Scanner;
public class SumOfPrimes { public static void main(String[] args) {Scanner s = new Scanner(System.in); // 創建一個 Scanner 對象用于讀取用戶輸入int n;do {System.out.print("請輸入一個大于等于 6 的偶數:"); // 提示用戶輸入一個大于等于 6 的偶數n = s.nextInt(); // 從用戶輸入中讀取一個整數,并賦值給變量 n} while (n < 6 || n % 2 != 0); // 如果輸入的數不是大于等于 6 的偶數,則重新輸入for (int i = 2; i <= n / 2; i++) { // 使用循環遍歷從 2 到 n/2 的數值 iif (isPrime(i) && isPrime(n - i)) { // 判斷 i 和 n-i 是否都是素數int j = n - i; // 將 n-i 的值賦給變量 jSystem.out.println(n + " = " + i + " + " + j); // 輸出符合條件的素數表示}}}// 判斷是否是素數的函數public static boolean isPrime(int a) {if (a == 3) { // 如果判斷的數字 a 是 3,直接返回 true,因為 3 是素數return true;}for (int i = 2; i <= Math.sqrt(a); i++) { // 使用循環遍歷從 2 到 a 的平方根的數值 iif (a % i == 0) { // 如果 a 能被 i 整除,說明 a 不是素數,返回 falsereturn false;}}return true; // 如果循環結束后沒有找到能整除 a 的數,說明 a 是素數,返回 true}
}
使用一個 for 循環從 2 遍歷到 n/2,并通過調用 isPrime 方法來判斷當前遍歷的數值和 n 減去該數值是否都是素數,如果是,則輸出這兩個素數的和等于 n 的表達式。
isPrime 方法用于判斷一個數值是否為素數。它首先特殊處理了數字 3 是素數的情況,然后使用一個 for 循環從 2 遍歷到該數值的平方根,并判斷該數值是否能被當前遍歷的數值整除,如果能整除,則返回 false,否則返回 true。
💖The End💖點點關注,收藏不迷路💖 |