-3

我在 20 多分钟内得到输出有什么办法可以减少快速输出的时间

public class Problem10 {
public static void main(String[] args) {
long temp =0;   
 int n=2000000;
 for(long i=2; i<n; i++){
 System.out.println((i));
     boolean isprime = true;
  for(long j=2; j<i; j++){
       if(i%j==0){
        isprime =false;    
           break;
          }
      }

  if(isprime)
   {temp +=i;

   }

  }
   System.out.println(temp);

} 

}
4

3 回答 3

3

如果我计算您的程序的复杂度大致为BigO(n*n). 在这里,如果nvalue 是2000000,那么将需要2000000 * 2000000迭代来完成整个任务。

这是非常大量的时间。我建议您将printlnwith 放入循环中,以提醒您它仍在运行。:)

于 2013-02-28T06:17:20.207 回答
1

Your data type is too small to hold the value so change it either in long or BigInteger type to optimization you can change your lncorrect logic to other logic. see the project euler site

于 2013-04-13T10:21:58.563 回答
0

将 temp 和 int 的数据类型更改为 long 它会起作用

于 2013-02-28T06:09:11.757 回答