1.什么是迷人的数字?
在数学中,如果一个数字是迷人的,就意味着它是一个素数,并且在十进制下的每一个旋转形式都是素数。例如,数字197是一个迷人的数字,因为197、971和719都是素数。
以下是判断一个数字是否是素数的基本步骤:
如果数字小于2,则不是素数。
如果数字能够被2整除,则不是素数。
对于一个要判断是否是素数的数字n,如果它不能被2整除,则从3开始,一直到n的平方根的整数部分,检查n是否能够被这些数整除。如果n不能被这些数整除,则n是一个素数。
2.在Java中检查一个数字是否是迷人的数字
在Java中,要检查一个数字是否是迷人的数字,我们需要进行以下步骤:
2.1 判断一个数字是否是素数
首先,我们需要判断一个数字是否是素数。以下是在Java中判断一个数字是否是素数的代码。
public static boolean isPrime(int n) {
if (n < 2) {
return false;
}
if (n == 2) {
return true;
}
if (n % 2 == 0) {
return false;
}
for (int i = 3; i <= Math.sqrt(n); i += 2) {
if (n % i == 0) {
return false;
}
}
return true;
}
通过调用这个方法,我们可以判断一个数字是否是素数。如果是素数,则返回true;否则,返回false。
2.2 获取一个数字的所有旋转形式
如果一个数字是素数,那么我们需要获取它的所有旋转形式,并且判断它们是否也是素数。以下是获取一个数字的所有旋转形式的代码。
public static List<Integer> getRotations(int n) {
List<Integer> rotations = new ArrayList<>();
String str = Integer.toString(n);
for (int i = 0; i < str.length(); i++) {
int rotation = Integer.parseInt(str.substring(i) + str.substring(0, i));
rotations.add(rotation);
}
return rotations;
}
通过调用这个方法,我们可以获取一个数字的所有旋转形式,并以List<Integer>的形式返回。
2.3 判断一个数字是否是迷人的数字
最后,我们将前面的两个步骤结合起来,判断一个数字是否是迷人的数字。以下是判断一个数字是否是迷人的数字的代码。
public static boolean isFascinating(int n) {
List<Integer> rotations = getRotations(n);
for (int rotation : rotations) {
if (!isPrime(rotation)) {
return false;
}
}
return true;
}
通过调用这个方法,我们可以判断一个数字是否是迷人的数字。如果是迷人的数字,则返回true;否则,返回false。
3.示例程序
以下是一个完整的示例程序,用于演示如何在Java中检查一个数字是否是迷人的数字。
import java.util.ArrayList;
import java.util.List;
public class FascinatingNumber {
public static boolean isPrime(int n) {
if (n < 2) {
return false;
}
if (n == 2) {
return true;
}
if (n % 2 == 0) {
return false;
}
for (int i = 3; i <= Math.sqrt(n); i += 2) {
if (n % i == 0) {
return false;
}
}
return true;
}
public static List<Integer> getRotations(int n) {
List<Integer> rotations = new ArrayList<>();
String str = Integer.toString(n);
for (int i = 0; i < str.length(); i++) {
int rotation = Integer.parseInt(str.substring(i) + str.substring(0, i));
rotations.add(rotation);
}
return rotations;
}
public static boolean isFascinating(int n) {
List<Integer> rotations = getRotations(n);
for (int rotation : rotations) {
if (!isPrime(rotation)) {
return false;
}
}
return true;
}
public static void main(String[] args) {
int n = 197;
if (isFascinating(n)) {
System.out.println(n + " is a fascinating number.");
} else {
System.out.println(n + " is not a fascinating number.");
}
}
}
在这个示例程序中,我们检查数字197是否是迷人的数字。因为197是迷人的数字,所以程序输出:197 is a fascinating number.
4.总结
在Java中,判断一个数字是否是迷人的数字并不难,只需要先判断它是否是素数,然后获取它的所有旋转形式,判断它们是否都是素数就可以了。