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