【问题标题】:Find/print how many numbers are generated before finding the random number查找/打印在找到随机数之前生成了多少个数字
【发布时间】:2013-11-30 04:05:23
【问题描述】:

如何找出并打印在找到随机数之前生成了多少个数字?

我尝试了很多次,在我得到质数之前,我无法弄清楚如何打印我生成的数字。非常感谢任何指导或帮助!

 public static void main(String[] args) {
 int range = 1000000;
 Random generator = new Random();
 int p = generator.nextInt(range) + 2;

 while (!isPrime(p))
     p = generator.nextInt(range) + 2;
     System.out.println("A random prime number is " + p);
 }

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

【问题讨论】:

    标签: java random


    【解决方案1】:

    这段代码

    while (!isPrime(p))
      p = generator.nextInt(range) + 2;
      System.out.println("A random prime number is " + p);
    }
    

    将在 p 实际为素数时停止。否则,它将生成一个新的随机数,将其加二,并声称结果为素数。

    【讨论】:

      【解决方案2】:

      在我从这一行得到质数*之前,我无法弄清楚如何打印我生成的数字我知道你想要打印生成的数字

      你可以这样做:

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

      【讨论】:

        【解决方案3】:

        您在其中的打印语句同时打印您在此过程中生成的随机数。在您的代码中,您将错过第一个生成的数字。为了获得您生成的所有数字和质数,您可以修改代码如下:

        private static boolean isPrime(int N) {
                  for (int i = 2; i <= Math.sqrt(N); i++) {
                          if (N % i == 0){
                             System.out.println("A random number is " + N);
                             return false;
                          }
        
                   }
                 System.out.println("Prime number is " + N);
                 return true;
              }
        public static void main(String[] args) {
        
              int range = 1000000;int count=1;
              Random generator = new Random();
              int p = generator.nextInt(range) + 2;
        
              while (!isPrime(p)){
                  count++;
                  p = generator.nextInt(range) + 2;
                  //System.out.println("A random prime number is " + p);
              }
        
             System.out.println("Total count is"+count);
         }
        }
        

        我设置了一个计数变量以进行验证。 count 应该等于生成随机数的次数,包括素数。

        【讨论】:

          【解决方案4】:

          通过将此代码添加到脚本中:

             private static boolean isPrime(int N) {
                for (int i = 2; i <= Math.sqrt(N); i++) {
                   if (N % i == 0)
                      System.out.println(N+" can be divided by "+i);
                      return false;
                }
                return true;
             }
          

          你知道它可以被什么数除。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2014-10-06
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-11-29
            • 1970-01-01
            • 2015-07-06
            • 1970-01-01
            相关资源
            最近更新 更多