如果一个两位数是素数,且它的数字位置经过对换后仍为素数,则称为绝对素数,例如13,交换后为31,13和31都是素数,所以13是绝对素数。 从键盘输入两个正整数A、B,请输出大于等于A、小于等于B的所有绝对素数。写出Java代码
时间: 2024-03-15 12:46:12 浏览: 69
好的,以下是用Java编写的程序,用于输出大于等于A、小于等于B的所有绝对素数。
```java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int A = scanner.nextInt();
int B = scanner.nextInt();
for (int num = A; num <= B; num++) {
if (isAbsolutePrime(num)) {
System.out.println(num);
}
}
}
public static boolean isPrime(int num) {
if (num < 2) {
return false;
}
for (int i = 2; i <= Math.sqrt(num); i++) {
if (num % i == 0) {
return false;
}
}
return true;
}
public static boolean isAbsolutePrime(int num) {
String strNum = Integer.toString(num);
for (int i = 0; i < strNum.length(); i++) {
for (int j = i + 1; j < strNum.length(); j++) {
char[] newNumChars = strNum.toCharArray();
char temp = newNumChars[i];
newNumChars[i] = newNumChars[j];
newNumChars[j] = temp;
int newNum = Integer.parseInt(new String(newNumChars));
if (!isPrime(newNum)) {
return false;
}
}
}
return true;
}
}
```
程序的逻辑与前面Python版本的类似,主要包括以下几个部分:
1. 从键盘输入两个正整数A和B。
2. 对于大于等于A且小于等于B的每一个数,判断它是否为绝对素数,如果是,则输出它的值。
3. 判断一个数是否为绝对素数的逻辑与前面Python版本的一致,将这个数转换为字符串,然后枚举所有可能的对换位置,得到一个新的数,判断这个新的数是否为素数,如果有一个对换位置得到的新数不是素数,则这个数就不是绝对素数。
希望这份Java代码能够帮到您,有其他问题欢迎随时提出。
阅读全文