用JAVA编程:两个相差为2的素数称为素数对,找出所有两个数均不大于n的素数对,要求输入一个正整数n,输出所有小于等于n的素数对,每对素数对输出一行,中间用单个空格隔开,若没有找到任何素数对,则输出empty
时间: 2024-10-24 08:04:07 浏览: 17
在Java编程中,我们可以使用埃拉托斯特尼筛法(Sieve of Eratosthenes)来找出所有不超过n的素数,然后通过遍历筛选出差值为2的素数对。以下是一个简单的示例程序:
```java
import java.util.ArrayList;
import java.util.List;
public class PrimePairFinder {
public static void main(String[] args) {
int n = 50; // 输入的正整数n
List<Integer[]> primePairs = findPrimePairs(n);
if (primePairs.isEmpty()) {
System.out.println("empty");
} else {
for (Integer[] pair : primePairs) {
System.out.println(pair[0] + " " + pair[1]);
}
}
}
public static List<Integer[]> findPrimePairs(int n) {
boolean[] isPrime = new boolean[n+1];
for (int i = 2; i <= n; i++) {
isPrime[i] = true;
}
for (int i = 2; i * i <= n; i++) {
if (isPrime[i]) {
for (int j = i * i; j <= n; j += i) {
isPrime[j] = false;
}
}
}
List<Integer[]> pairs = new ArrayList<>();
for (int i = 2; i < n; i++) {
if (isPrime[i] && isPrime[i + 2]) { // 检查是否相差2的素数
pairs.add(new Integer[]{i, i + 2});
}
}
return pairs;
}
}
```
在这个程序中,我们首先创建了一个布尔数组`isPrime`用于标记每个数字是否是素数。接着,我们遍历数组并从2开始,如果当前数字是素数,我们就将其倍数设为非素数。最后,我们在主函数中查找所有的素数对,并输出结果。
如果你需要运行此程序,只需将`n`变量替换为你想要查找素数对的最大值。如果没有找到符合条件的素数对,程序会输出"empty"。
阅读全文