📅  最后修改于: 2023-12-03 15:02:06.348000             🧑  作者: Mango
在Java中,可以通过以下程序检查一个整数数组中的所有元素是否都可以通过旋转数字转换为普罗尼克数。
import java.util.HashSet;
public class ProthnicNumberChecker {
public static boolean isProthnicNumber(int number) {
String numberString = Integer.toString(number);
HashSet<Integer> prothnicNumbers = new HashSet<Integer>();
int length = numberString.length();
for (int i = 0; i < length; i++) {
int rotatedNumber = Integer.parseInt(numberString.substring(i) + numberString.substring(0, i));
if (rotatedNumber != number && isPrime(rotatedNumber)) {
prothnicNumbers.add(rotatedNumber);
}
}
return !prothnicNumbers.isEmpty();
}
public static boolean isPrime(int number) {
if (number <= 1) {
return false;
}
if (number <= 3) {
return true;
}
if (number % 2 == 0 || number % 3 == 0) {
return false;
}
for (int i = 5; i <= Math.sqrt(number); i += 6) {
if (number % i == 0 || number % (i + 2) == 0) {
return false;
}
}
return true;
}
public static void main(String[] args) {
int[] numbers = {234, 123, 45, 678};
for (int number : numbers) {
if (isProthnicNumber(number)) {
System.out.println(number + " is a Prothnic Number");
} else {
System.out.println(number + " is not a Prothnic Number");
}
}
}
}
在上述程序中,isProthnicNumber
方法检查给定的整数是否是普罗尼克数,它通过对该数字的每个循环移位(即将最后一位移到第一位)调用isPrime
方法来实现。如果有任何不同于原始输入数字并且是素数的旋转数字,则该循环会将该数字添加到prothnicNumbers
哈希集合中。如果集合不为空,则意味着给定的数字可以通过旋转数字转换为普罗尼克数。
isPrime
方法用于检查给定的数字是否是素数。它使用基本的质数测试算法检查数字是否可以被任何从5到其平方根的整数整除。如果数字是1或小于1,则该方法将返回false
。
在main
方法中,我们创建了一个整数数组numbers
,并通过for-each
循环遍历数组中的每个数字,然后调用isProthnicNumber
方法检查该数字是否是普罗尼克数。如果是普罗尼克数,则输出“数字是普罗尼克数”,否则输出“数字不是普罗尼克数”。
使用此程序,您可以轻松检查整数数组中的所有数字是否可以通过旋转数字转换为普罗尼克数。