我尝试了很多,并对其进行了几次调试,一切似乎都在起作用,即使花费了很长时间,最大素数的确也确实变成了最大素数。
我无法从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);
}
}
答案 0 :(得分:0)
对于您可能到处询问的其他问题,请告诉我们代码的目的是什么。这样,更容易出错。
您上面编写的代码可以完全运行,但是使用的数字太大,因此您需要等待很多时间,这样编译器才能到达此行:
System.out.print(largestprime);
使用较小的数字(至少用于测试)或正确等待。
答案 1 :(得分:0)
您的“入门”价值非常大。
因此,循环要花很长时间才能达到“ 600851475143”的值。
等待一段时间,它显示最大的质数