Java 检查数字的每个排列是否为素数

Java 检查数字的每个排列是否为素数,java,permutation,primes,Java,Permutation,Primes,我正在研究这个问题。 此函数用于检查传递给它的数字(4位数字)的每个排列,并检查它们的素性,如果有超过2(即3)个数字,则打印这些数字 我得到的输出是一个永无止境的数字序列。我做错了什么 另外,很确定这与数字的重复有关,但我不知道如何解决这个问题 void checkperm(int a) { int w, x, y, z = 0; int count = 0; w = a % 10; x = (a % 100 - w) / 10; y = (a % 10

我正在研究这个问题。 此函数用于检查传递给它的数字(4位数字)的每个排列,并检查它们的素性,如果有超过2(即3)个数字,则打印这些数字

我得到的输出是一个永无止境的数字序列。我做错了什么

另外,很确定这与数字的重复有关,但我不知道如何解决这个问题

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]);
        }

}
void checkperm(int a){
int w,x,y,z=0;
整数计数=0;
w=a%10;
x=(a%100-w)/10;
y=(a%1000-(10*x+w)/100);
z=a-(y*100+x*10+w)/1000;
系统输出打印LN(w+x+y+z);/*测试*/
int[]数据;
数据=新的整数[]{w,x,y,z};
int[]num=新的int[100];
对于(int m=0;m<4;m++){
对于(int n=0;n<4;n++){
对于(int o=0;o<4;o++){
对于(int p=0;p<4;p++){
如果(真){
int gnaw=1000*数据[m]+100*数据[n]+10*数据[o]+数据[p];
如果(检查主(啃咬)){
num[计数]=啃咬;
计数++;
}
}
}
}
}
}
如果(计数>2)
对于(int h=0;h<4;h++){
System.out.println(num[h]);
}
}

计算w、x、y和z的方法是错误的

应该是什么-

int temp = a;

w = temp%10;

temp = temp/10;
x = temp%10;

temp = temp/10;
y = temp%10;

temp = temp/10;
z = temp;
这只是代码中的逻辑更正。理想情况下,所有这些都应该在一个循环中发生


这将有助于假设您的其余代码在逻辑上是正确的(我没有读过)。

尝试打印
w
x
y
z
。你会在定义中发现一些错误。