两个相差为2的素数称为素数对,如5和7,17和19等,本题目要求找出所有两个数均不大于n的素数对。Java程序
时间: 2024-10-24 07:16:20 浏览: 16
在Java中,寻找小于等于给定整数n的所有素数对可以分为几个步骤:
1. **定义辅助函数**:首先,我们需要一个判断是否为素数的函数。例如,可以采用埃拉托斯特尼筛法(Sieve of Eratosthenes)预生成一定范围内的素数。
```java
public boolean isPrime(int num) {
if (num <= 1) return false;
for (int i = 2; i * i <= num; i++) {
if (num % i == 0)
return false;
}
return true;
}
```
2. **主算法**:遍历从2到n(包括n),对于每个数i,如果它是素数,就检查它加2后的数(i+2)是否也是素数。如果是,那么(i, i+2)就是一个素数对。
```java
void findPrimePairs(int n) {
List<int[]> pairs = new ArrayList<>();
for (int i = 2; i <= n - 2; i++) { // 避免检查超过n-2的情况,因为最大可能的素数对是(n-2, n)
if (isPrime(i) && isPrime(i + 2)) {
pairs.add(new int[]{i, i + 2});
}
}
// 输出或返回结果
for (int[] pair : pairs) {
System.out.println("Pair: " + pair[0] + ", " + pair[1]);
}
}
```
3. **完整代码示例**:
```java
import java.util.ArrayList;
import java.util.List;
class PrimePairsFinder {
public static void main(String[] args) {
int n = 30; // 替换成你需要找的上限值
findPrimePairs(n);
}
private static boolean isPrime(int num) {
// 筛法实现略...
}
private static void findPrimePairs(int n) {
List<int[]> pairs = new ArrayList<>();
for (int i = 2; i <= n - 2; i++) {
if (isPrime(i) && isPrime(i + 2)) {
pairs.add(new int[]{i, i + 2});
}
}
pairs.forEach(pair -> System.out.println("Pair: " + pair[0] + ", " + pair[1]));
}
}
```
阅读全文