【面试干货】找出一个偶数能够表示为两个素数之和的所有可能情况
- 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💖点点关注,收藏不迷路💖 |