用Java jdk17编写一个程序,回文素数是指一个数同时为素数和回文数。例如,131是一个素数,同时也是一个回文数,757也是回文素数。编写程序,显示前20个回文素数。每行显示10个数,数字之间用空格隔开,如下所示。
时间: 2024-10-23 14:09:32 浏览: 32
首先,我们需要了解一下回文数和素数的基本判断方法。回文数就是正读反读都一样的数,而素数则是只有两个正因数(1和自身)的大于1的自然数。
下面是一个简单的Java程序,利用JDK17编写的,用于找出并打印前20个回文素数:
```java
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
List<Long> palindromicPrimes = new ArrayList<>();
for (long number = 101; palindromicPrimes.size() < 20; number++) { // 从大于100开始寻找,因为1和0不是素数也不是回文数
if (isPalindrome(number) && isPrime(number)) {
palindromicPrimes.add(number);
}
}
printNumbersInBatches(palindromicPrimes, 10); // 打印结果
}
// 判断是否为回文数
private static boolean isPalindrome(long num) {
String strNum = Long.toString(num);
int start = 0, end = strNum.length() - 1;
while (start < end) {
if (strNum.charAt(start) != strNum.charAt(end))
return false;
start++;
end--;
}
return true;
}
// 判断是否为素数
private static boolean isPrime(long num) {
if (num <= 1)
return false;
for (long i = 2; i * i <= num; i++)
if (num % i == 0)
return false;
return true;
}
// 按批次打印10个数
private static void printNumbersInBatches(List<Long> numbers, int batchSize) {
Scanner scanner = new Scanner(System.in);
for (int i = 0; i < numbers.size(); i += batchSize) {
System.out.print(numbers.get(i));
if (i + batchSize < numbers.size()) {
System.out.printf(" %d", numbers.get(i + 1)); // 连接相邻的数字
} else {
System.out.println();
}
}
scanner.close();
}
}
```
运行此程序后,你会看到前20个回文素数按每行10个的方式打印出来。
阅读全文