【问题标题】:Generating two random prime numbers in JAVA在JAVA中生成两个随机素数
【发布时间】:2015-03-04 03:25:58
【问题描述】:

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

pq 变量由 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);
}

【问题讨论】:

  • 你的内部 for 循环永远不会被执行。查看 for 循环的条件。 “j
  • @SubrataDey,我仍然得到一个主要输出:P 值:68
  • 这只是使 P 值成为 1

标签: java random


【解决方案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;
    }

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-28
    • 1970-01-01
    • 2012-04-28
    • 2011-03-19
    • 1970-01-01
    • 2015-11-25
    • 2011-07-13
    • 1970-01-01
    相关资源
    最近更新 更多