【问题标题】:Why am I not seeing my stderr println after my stdout println?为什么在我的 stdout println 之后我没有看到我的 stderr println?
【发布时间】:2013-03-29 08:36:15
【问题描述】:
   public static void algorithmOne(int n){

      long startTime = System.currentTimeMillis();

      search:
      for (int possiblePrime = 2; possiblePrime <= n; possiblePrime++){

         for (int divisor = 2; divisor < possiblePrime; divisor++)
            if ( possiblePrime%divisor == 0 && possiblePrime != divisor )
               continue search;

         System.out.println(possiblePrime);
      }
      long endTime = System.currentTimeMillis();
      System.err.println(endTime - startTime);
   }

这是一种查找素数的方法,我无法弄清楚为什么我没有达到“System.err.println(endTime - startTime);”行。

【问题讨论】:

  • 一个整数,我必须找到从 2 到 N 的所有素数。

标签: java stdout output stderr println


【解决方案1】:

我猜你正在达到你的时差 println(),但你没有在你期望的地方看到它。这是因为您将它打印到 stderr - 所以您不能保证它在所有 println() 都附加到标准输出之后。

尝试打印到标准输出...

至于您的素性测试算法 - 看看these 两个关于决定素性的questions(那里有链接)。 this 还讨论了寻找主要因素,这不是同一个问题,但有一些您可能感兴趣的见解。具体来说,请考虑以下几点:

  • 你的内循环只需要上升到sqrt(n),就好像a是n的一个因子,那么n/a也是。
  • 3 之后的所有质因数都是 6n-1 或 6n+1 的形式(想想看),所以你可以循环 .如果您想到 Sieve of Erathostenes,您可以想到额外的此类“肮脏”优化。

这是“简单的事情”,你可以做的还有很多。但是,真的,你为什么要自己写一个素数测试呢?你可以使用existing code

【讨论】:

  • eek :( 我发布了算法一,而不是第二个,这是有问题的算法。但是无论如何我有 System.out.err(endTime - startTime); 而不是 System.err。 println(endTime - startTime) 该程序仍在编译,所以我遇到了另一个问题,这都是由这个引起的......
  • @bob:我仍然建议你阅读一些关于素性测试的内容,这很有趣。
【解决方案2】:

试试这个:

    long startTime = System.nanoTime();

    search: for (int possiblePrime = 2; possiblePrime <= 10; possiblePrime++) {

        for (int divisor = 2; divisor < possiblePrime; divisor++)
            if (possiblePrime % divisor == 0 && possiblePrime != divisor)
                continue search;

        System.out.println(possiblePrime);
    }
    long endTime = System.nanoTime();
    System.out.println(startTime);
    System.out.println(endTime);
    System.out.println("Total time taken is : " + (endTime - startTime));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-27
    相关资源
    最近更新 更多