为什么在这种情况下,println没有输出?

时间:2019-01-20 12:26:06

标签: java math double primes

我尝试了很多,并对其进行了几次调试,一切似乎都在起作用,即使花费了很长时间,最大素数的确也确实变成了最大素数。

我无法从System.out.println获得印刷价值。我可以通过调试器找到它,但是该值太大而无法快速执行,只是按住了一步。

它也可以编译,所以我对这里的问题感到困惑。我很高兴知道自己做错了。

编辑:我之所以写此代码,是因为在站点项目euler中,它要求的最大质数除以引物的值即得到一个整数。

是否至少有一种方法可以让我用相同的值使其更快?这似乎不切实际。

package unit5;

public class Primefinder { public static void main(String[] args)
{
double primer = 600851475143d;
double largestprime = 0;
Boolean ifprime = false;

for(double x = 2d; x < primer; x++)
{
    for(double z = 2d; z<x; z++)
    {
        if( (x%z == 0) && (z != x) )
        {
            ifprime = false;
            break;
        }
        else {
            ifprime = true;
        }

    }


    if((ifprime != false) && (x > largestprime))
    {
        largestprime = x;
    }

    ifprime = false;
}


System.out.print(largestprime);

}

}

2 个答案:

答案 0 :(得分:0)

对于您可能到处询问的其他问题,请告诉我们代码的目的是什么。这样,更容易出错。

您上面编写的代码可以完全运行,但是使用的数字太大,因此您需要等待很多时间,这样编译器才能到达此行:

System.out.print(largestprime);

使用较小的数字(至少用于测试)或正确等待。

答案 1 :(得分:0)

您的“入门”价值非常大。

因此,循环要花很长时间才能达到“ 600851475143”的值。

  

等待一段时间,它显示最大的质数