Java编程把一个给出的整数写成四个素数之和
时间: 2024-03-08 14:47:17 浏览: 15
Java代码如下:
```java
import java.util.ArrayList;
import java.util.List;
public class PrimeNumberSum {
public static void main(String[] args) {
int num = 100;
List<Integer> primes = getPrimes(num);
System.out.println("The prime numbers less than or equal to " + num + " are: " + primes);
List<List<Integer>> results = findFourPrimesSum(num, primes);
System.out.println("The sums of four prime numbers that equal to " + num + " are:");
for (List<Integer> result : results) {
System.out.println(result);
}
}
// 获取小于等于n的所有素数
public static List<Integer> getPrimes(int n) {
List<Integer> primes = new ArrayList<>();
boolean[] isPrime = new boolean[n+1];
for (int i = 2; i <= n; i++) {
isPrime[i] = true;
}
for (int i = 2; i <= n; i++) {
if (isPrime[i]) {
primes.add(i);
for (int j = i*i; j <= n; j += i) {
isPrime[j] = false;
}
}
}
return primes;
}
// 找到所有由四个素数相加等于n的组合
public static List<List<Integer>> findFourPrimesSum(int n, List<Integer> primes) {
List<List<Integer>> results = new ArrayList<>();
for (int i = 0; i < primes.size(); i++) {
for (int j = i; j < primes.size(); j++) {
for (int k = j; k < primes.size(); k++) {
for (int l = k; l < primes.size(); l++) {
if (primes.get(i) + primes.get(j) + primes.get(k) + primes.get(l) == n) {
List<Integer> result = new ArrayList<>();
result.add(primes.get(i));
result.add(primes.get(j));
result.add(primes.get(k));
result.add(primes.get(l));
results.add(result);
}
}
}
}
}
return results;
}
}
```
该程序首先获取小于等于所给整数的所有素数,然后通过四重循环遍历素数列表,找到所有由四个素数相加等于所给整数的组合。最后将结果输出。