Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中的算术错误_Java - Fatal编程技术网

Java中的算术错误

Java中的算术错误,java,Java,我最近开始学习Java,现在正试图解决一些Eulerproject问题 任务是:数字600851475143中最大的素因子是什么? 我可以创建此代码,但出现错误: 代码 错误: Exception in thread "main" java.lang.ArithmeticException: / by zero at exercises.Euler3.getPrimeFactors(Euler3.java:22) at exercises.Euler3.main(Euler3.j

我最近开始学习Java,现在正试图解决一些Eulerproject问题

任务是:数字600851475143中最大的素因子是什么?

我可以创建此代码,但出现错误:

代码

错误:

Exception in thread "main" java.lang.ArithmeticException: / by zero
    at exercises.Euler3.getPrimeFactors(Euler3.java:22)
    at exercises.Euler3.main(Euler3.java:9)
我做错了什么?

感谢提供了一个非常简单的解决方案,请尝试将行
d+=d
更改为
d+=1
问题是您的d正在跨越
整数。Max
限制和溢出。

您的
d
溢出,我在
内部打印
n
d
,而(n>1)
:


我认为解决方案是
d++
,而不是
d+=d
——现在您只检查两个整数的幂,而不是所有连续整数。

您的逻辑似乎不正确。它只会除以2的幂,最终你会得到一个溢出,它会尝试除以0。
Exception in thread "main" java.lang.ArithmeticException: / by zero
    at exercises.Euler3.getPrimeFactors(Euler3.java:22)
    at exercises.Euler3.main(Euler3.java:9)
    15 2
    15 4
    15 8
    15 16
    15 32
    15 64
    15 128
    15 256
    15 512
    15 1024
    15 2048
    15 4096
    15 8192
    15 16384
    15 32768
    15 65536
    15 131072
    15 262144
    15 524288
    15 1048576
    15 2097152
    15 4194304
    15 8388608
    15 16777216
    15 33554432
    15 67108864
    15 134217728
    15 268435456
    15 536870912
    15 1073741824
    15 -2147483648
    15 0