在JAVA中生成两个随机素数

时间:2015-03-04 03:25:59

标签: java random

我试图在JAVA中生成两个随机素数,但是,我希望循环不断重复,直到这两个变量都是素数,然后它们自己输出。

p q 变量由 Math.random()函数随机化,范围为2到128(不包括128)。

这是我的代码:

int pRandom = (int) (Math.random() * (127 - 2) + 2);
int qRandom = (int) (Math.random() * (127 - 2) + 2);
int p = pRandom;
int q = qRandom;

for (int i = 1; i < p; i++) {
boolean isPPrime = true;

for (int j = 2; j < i; j++) {
    if (i % j == 0) {
        isPPrime = false;
        break;
    }
}
if (isPPrime){
    JOptionPane.showMessageDialog(null, "YAY!");
    break;
  }
    System.out.println("P value: " + p + "\n" + "Q value: " + q);
}

1 个答案:

答案 0 :(得分:1)

这是你想要的:

public class RandomPrimeGenerator {

    public static void main(String[] args) {

        while (true) {
            int pRandom = (int) (Math.random() * (127 - 2) + 2);
            if(isPrime(pRandom)){
                System.out.println("Got Random Prime P :"+pRandom);
                break;
            }
        }
        while(true){
            int qRandom = (int) (Math.random() * (127 - 2) + 2);
            if(isPrime(qRandom)){
                System.out.println("Got Random Prime Q :"+qRandom);
                break;
            }
        }

    }

    private static boolean isPrime(int n) {
       int i;
       for(i=2;i<=Math.sqrt(n);i++){
           if(n % i == 0){
               return false;
           }
       }
       return true;
    }

}