首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >项目Euler 3 Java ArithmeticException

项目Euler 3 Java ArithmeticException
EN

Stack Overflow用户
提问于 2014-06-24 18:23:20
回答 1查看 75关注 0票数 0

这得到了所有的主要因素的数字,但它继续进行,然后输出消极因素的数字,由于某种原因,帮助?链接到这里的问题:http://projecteuler.net/problem=3

代码语言:javascript
复制
public static void main(String[] args) {
    long number = 600851475143l;

    divChecker(number);
}

public static void divChecker(long n) {
    int div = 2;
    while (div * div < n) {
        if (n % div == 0) {
            primeChecker(div);
            div++;
        } else {
            div++;
        }
    }
}

public static void primeChecker(long n) {
    int div = 2;
    while (div * div < n) {
        if (n % div != 0) {
            div++;
        } else {
            break;
        }
    }
    if (n % div != 0) {
        System.out.println(n);
    }
}

这里的产出:

代码语言:javascript
复制
71
839
1471
6857
-716151937
-408464633
-87625999
-10086647
-5753023
-1234169
-486847
-104441
-59569
-6857
-1471
-839
-71
-1
Exception in thread "main" java.lang.ArithmeticException: / by zero
    at Bucky.divChecker(Bucky.java:13)
    at Bucky.main(Bucky.java:7)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-24 18:26:12

您与int的乘数最终会溢出,从而产生“负面”因素。

div变量声明为long而不是int

代码语言:javascript
复制
long div = 2;  // Two places in the code

更改后,我只获得此输出,而Windows计算器验证它们的产品是否为您要考虑的原始编号,600851475143L

代码语言:javascript
复制
71
839
1471
6857
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24393670

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档