如何在Java中检查一个数字是否是迷人的数字?

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中,判断一个数字是否是迷人的数字并不难,只需要先判断它是否是素数,然后获取它的所有旋转形式,判断它们是否都是素数就可以了。

后端开发标签