如果一个自然数是素数,且它的数字位置经过对换后仍为素数,则称为绝对素数,例如13。试求出所有二位绝对素数。 [输入](无)[输出] 所有二位绝对素数(由小到大,一个数一行) 请输入答案Java代码
时间: 2024-09-18 20:04:41 浏览: 55
数学判断一个数是否为素数
要找出所有的两位绝对素数,我们可以编写一个Java函数,遍历2到99之间的所有数字,检查它们是否既是素数又是交换其数字顺序后仍然是素数。以下是实现这个功能的Java代码:
```java
public class AbsolutePrime {
public static void main(String[] args) {
int[] absolutePrimes = findAbsolutePrimes(10, 99); // 获取范围内的绝对素数
for (int prime : absolutePrimes) {
System.out.println(prime);
}
}
/**
* 检查一个数是否是绝对素数
*/
private static boolean isPrime(int number) {
if (number <= 1) {
return false;
}
for (int i = 2; i <= Math.sqrt(number); i++) {
if (number % i == 0) {
return false;
}
}
return true;
}
/**
* 查找指定范围内的一位绝对素数
*/
private static int[] findAbsolutePrimes(int start, int end) {
List<Integer> absolutePrimesList = new ArrayList<>();
for (int i = start; i < end; i++) {
String digitsStr = Integer.toString(i);
if (isPrime(Integer.parseInt(digitsStr)) && isPrime(reverseNumber(digitsStr))) {
absolutePrimesList.add(i);
}
}
return absolutePrimesList.stream().mapToInt(Integer::intValue).toArray();
}
/**
* 反转数字字符串
*/
private static String reverseNumber(String digitsStr) {
return new StringBuilder(digitsStr).reverse().toString();
}
}
```
这段代码首先定义了一个`isPrime`函数来判断一个数是否是素数,接着在`findAbsolutePrimes`函数中遍历指定范围内的每个数,将其转换成字符串,比较原数和反转后的数是否都是素数,如果是,则加入结果列表。最后在`main`函数中打印所有找到的绝对素数。
运行此代码将输出所有两位绝对素数。
阅读全文