Я работаю над этой проблемой https://projecteuler.net/problem=49. Это функция проверки каждой перестановки числа (4 цифры), переданного ей, и проверки их на простоту, а если их больше 2 (т. Е. 3), напечатайте цифры.Проверить каждую перестановку числа для простоты
Выход, который я получаю, - это бесконечная последовательность чисел. Что я делаю не так?
P.s- довольно уверен, что это связано с повторением цифр, не может понять, как обойти его.
void checkperm(int a) {
int w, x, y, z = 0;
int count = 0;
w = a % 10;
x = (a % 100 - w)/10;
y = (a % 1000 - (10 * x + w)/100);
z = a - (y * 100 + x * 10 + w)/1000;
System.out.println(w+x+y+z); /*test*/
int[] data;
data = new int[] { w, x, y, z };
int[] num = new int[100];
for (int m = 0; m < 4; m++) {
for (int n = 0; n < 4; n++) {
for (int o = 0; o < 4; o++) {
for (int p = 0; p < 4; p++) {
if (true) {
int gnaw = 1000 * data[m] + 100 * data[n] + 10 * data[o] + data[p];
if (checkprime(gnaw)) {
num[count] = gnaw;
count++;
}
}
}
}
}
}
if (count > 2)
for (int h = 0; h < 4; h++) {
System.out.println(num[h]);
}
}
Попробуйте напечатать 'w',' x', 'y' и' z'. Вы найдете некоторые ошибки в своих определениях. – user2357112