用java代码实现因为 151 既是一个质数又是一个回文数(从左到右和从右到左是看一样的),所以 151 是回文质数。 写一个程序来找出范围 [a,b] (5 <= a < b <= 100,000,000)(一亿)间的所有回文质数。
时间: 2024-04-29 18:22:41 浏览: 9
```java
import java.util.ArrayList;
public class PalindromePrime {
public static void main(String[] args) {
int a = 5;
int b = 100000000;
ArrayList<Integer> palindromePrimes = new ArrayList<>();
for (int i = a; i <= b; i++) {
if (isPalindrome(i) && isPrime(i)) {
palindromePrimes.add(i);
}
}
System.out.println("Palindrome Primes between " + a + " and " + b + " are: ");
for (int i : palindromePrimes) {
System.out.print(i + " ");
}
}
public static boolean isPalindrome(int num) {
String str = Integer.toString(num);
int len = str.length();
for (int i = 0; i < len / 2; i++) {
if (str.charAt(i) != str.charAt(len - i - 1)) {
return false;
}
}
return true;
}
public static boolean isPrime(int num) {
if (num <= 1) {
return false;
}
for (int i = 2; i <= Math.sqrt(num); i++) {
if (num % i == 0) {
return false;
}
}
return true;
}
}
```
这个程序首先定义了范围 [a, b],然后使用循环遍历范围内的每个数字。对于每个数字,程序使用 `isPalindrome()` 和 `isPrime()` 方法来判断它是不是回文质数。如果是,就将该数字加入到 `palindromePrimes` 数组中。
`isPalindrome()` 方法将数字转换为字符串,然后比较字符串的第 i 个字符和第 len - i - 1 个字符(i 从 0 开始)。如果有不相等的字符,则该数字不是回文数,返回 false。否则返回 true。
`isPrime()` 方法检查数字是否是质数。如果数字小于等于 1,则它不是质数,返回 false。否则,程序从 2 开始,遍历到数字的平方根。如果该数字可以被整除,则它不是质数,返回 false。否则返回 true。
最后,程序输出 `palindromePrimes` 数组中的所有元素。