Java 欧拉';s项目#3输出错误

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++)

我目前正在尝试Euler问题中的问题3,我遇到了这样一个问题:当编译下面的代码时,我得到的是“1”作为输出,即使for循环使它运行多次。我把数字降到了30,试图找出问题所在,但我没有找到。看看其他解决方案,我的解决方案的逻辑完全相同

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)
产生的因子是否是素数吗?不过,关于第二部分,你是对的。