Java程序检查数字是否可以表示为两个素数之和
对于给定的整数,编写一个Java程序来检查它是否可以表示为两个素数之和。如果一个数只有两个因子(1和它本身),并且不能被任何其他数整除,则称该数为素数。一些素数的例子是2、3、5、7、11、13等等。2是唯一的偶素数。所有其他素数都是奇数。
让我们用一个例子来理解这个问题:
示例场景
Input: num = 43; Output: res = TRUE
可能的解法是:43 = 2 + 41。这里,2和41是素数。
要检查给定数字是否可以表示为两个素数之和,请遍历小于给定整数的数字,然后使用嵌套if块找到可能的数字对。如果每一对中的两个数字都是素数,则打印TRUE,否则打印FALSE。
程序1
下面给出了一个演示如何检查数字是否可以表示为两个素数之和的Java程序:
public class SumOfPrimes {
public static void main(String[] args) {
int my_input, i;
boolean my_temp = false;
my_input = 34;
System.out.println("The number is defined as " +my_input);
for (i = 2; i <= my_input / 2; ++i) {
if (IsPrime(i)) {
if (IsPrime(my_input - i)) {
my_temp = true;
break;
}
}
}
if (!my_temp) {
System.out.println("FALSE");
} else {
System.out.println("TRUE");
}
}
static boolean IsPrime(int num) {
boolean my_prime = true;
for (int i = 2; i <= num / 2; ++i) {
if (num % i == 0) {
my_prime = false;
break;
}
}
return my_prime;
}
}
输出
The number is defined as 43 TRUE
程序2
在这个Java程序中,我们使用了一种更优化的方式来查找从1到给定整数的素数对,然后检查该数是否可以表示为两个素数之和。
import java.util.Arrays;
public class SumOfPrimes {
public static void main(String[] args) {
int my_input = 19;
System.out.println("The number is defined as " +my_input);
boolean[] primes = IsPrime(my_input);
boolean my_temp = false;
for (int i = 2; i <= my_input / 2; ++i) {
if (primes[i]) {
if (primes[my_input - i]) {
my_temp = true;
break;
}
}
}
if (!my_temp) {
System.out.println("FALSE");
} else {
System.out.println("TRUE");
}
}
// Sieve of Eratosthenes algorithm to find all primes less than n
public static boolean[] IsPrime(int n) {
boolean[] my_prime = new boolean[n + 1];
Arrays.fill(my_prime, true);
my_prime[0] = my_prime[1] = false;
for (int i = 2; i * i <= n; i++) {
if (my_prime[i]) {
for (int j = i * i; j <= n; j += i) {
my_prime[j] = false;
}
}
}
return my_prime;
}
}
输出
The number is defined as 19 TRUE
广告
数据结构
网络
关系数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP