【发布时间】:2016-11-05 00:02:12
【问题描述】:
我必须编写一个布尔方法来检查一个数字 n 是否是一个循环素数,只使用整数计算,所以没有字符串。我写了另外两个必须包含的方法。
boolean isPrime(int n) {
if (n < 1) {
return false;
} else if (n == 1 || n == 2) {
return true;
} else if (n % 2 != 0) {
for (int i = 3; i < n; i+=2) {
if (n % i == 0) {
return false;
}
}
return true;
} else {
return false;
}
}
这会检查数字是否为素数。
int largestPowerOfTen(int n) {
for (int i = 1; i < n * 10; i*=10) {
if (n / i == 0) {
return i / 10;
}
}
return 1;
}
这将返回数字的 10 的最大幂。例如,23 将返回 10,704 将返回 100,等等。
我的想法是将每个数字放入一个数组并从那里移动数字,但我被困在移动部分。
boolean isCircularPrime(int n) {
ArrayList<Integer> k = new ArrayList<Integer>();
int i = 0;
while (n != 0) {
k.add(n % 10);
n /= 10;
i++;
}
//???
}
那么我该如何移动数字呢?
【问题讨论】:
-
您不需要 ArrayList 或字符串:将最后一位数字计算为
n模 10。将n除以 10 并向下取整。将largestPowerOfTen(n)的最后一位数字乘以n。您现在应该已经将n向右旋转了一个位置。