java - 项目 Euler #10 Java 不工作

标签 java project

10 以下的素数之和为 2 + 3 + 5 + 7 = 17。

求 200 万以下所有素数的和。

            public class Problem10
            {
                public static void main(String[] args)
                {
                    int sum = 17;
                    for(long i=11; i<2000000; i+=2)
                    {
                        if(isPrime(i)) sum += i;
                    }
                    System.out.println(sum);    

                }

                public static boolean isPrime(long n)
                {
                    if(n==2) return true;
                    if(n%2 == 0) return false;
                    for(long i=3; i<= Math.sqrt(n); i+=2)
                    {
                        if(n%i == 0) return false;
                    }
                    return true;
                }
            }

我不明白这有什么问题。它不断打印 1179908154,这是不正确的。

最佳答案

您的sum是一个int,但正在发生整数溢出。如果将数据类型更改为long,则答案将更改为142913828922,它比最大可能的int长。 That appears to be the correct answer.

关于java - 项目 Euler #10 Java 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29931082/

相关文章:

gradle - android studio 0.8.1:Gradle项目同步失败。基本功能(例如,编辑,调试)将无法正常运行

c# - 你可以有多个默认命名空间吗?

Python:如何检测长序列号中的特定数字

java - 如何检查当前日期是否是本月的第一天

java - org.hibernate.MappingException : Could not determine t ype for: com. yammer.dropwizard.tailor.model.CustomerModel

java - 递归创建新对象是否比创建引用慢?

java - 为什么静态初始化程序允许在 Java 中重新初始化静态变量?

java - 当我将 netbeans 7.0 升级到 netbeans 7.0.1 时,我丢失了项目

JAVA:用时区解析日期

crash - Wakanda Studio 在打开解决方案、项目时崩溃