Java 欧拉';s项目#3输出错误
我目前正在尝试Euler问题中的问题3,我遇到了这样一个问题:当编译下面的代码时,我得到的是“1”作为输出,即使for循环使它运行多次。我把数字降到了30,试图找出问题所在,但我没有找到。看看其他解决方案,我的解决方案的逻辑完全相同Java 欧拉';s项目#3输出错误,java,syntax,primes,Java,Syntax,Primes,我目前正在尝试Euler问题中的问题3,我遇到了这样一个问题:当编译下面的代码时,我得到的是“1”作为输出,即使for循环使它运行多次。我把数字降到了30,试图找出问题所在,但我没有找到。看看其他解决方案,我的解决方案的逻辑完全相同 public class eulerproblem3 { public static void main(String[]args) { int current = 1; for (int test=1;test==30;test++)
public class eulerproblem3
{
public static void main(String[]args)
{
int current = 1;
for (int test=1;test==30;test++)
{
if ((30%test)==0)
{
boolean a = testPrime(test);
if ((a==true)&&(test==current))
{
System.out.println(current);
}
}
}
}
private static boolean testPrime(long test1)
{
for(long ref=2; test1==ref; ref++)
{
if ((test1%ref)==0)
{
return false;
}
}
return true;
}
}
对于s,您的
条件将始终为false。你可能想要像这样的东西
for (int test = 1; test < 30; test++)
for(int-test=1;test<30;test++)
当test
为1
时,则test!=30
因此跳过了循环。两个For循环都不正确。您正在检查单个数字的相等性(test==30
)(test1==ref
)。您应该使用test您是否考虑过实现Eratosthenes的筛选?我认为从你这里的代码来看,筛子可能是一个更快的解决方案。ps:关于for循环,其他人是对的@MrPublic不应该将test==30作为终止命令来工作,所以在29个循环之后,test现在是30,for循环终止?还是我遗漏了什么?@rogerho for循环的第二部分必须为true才能运行循环。这并不意味着循环在计算结果为true时将终止。我已经更改了所有for循环,但仍然没有输出。是否因为代码运行时间太长?或者我的代码中还有其他错误吗?因为如果((30%测试)==0),则此条件永远不会为真。为什么?如果((30%测试)==0)
用于检查test
是否为30的因子,如果是,条件是否应该为真?您是对的,但testPrime已经检查了因子。对我来说,如果。即使这个检查(test==current)
如果我错了也会纠正我,但是testPrime不是在测试如果((30%test)==0)
产生的因子是否是素数吗?不过,关于第二部分,你是对的。