Java中的算术错误
我最近开始学习Java,现在正试图解决一些Eulerproject问题 任务是:数字600851475143中最大的素因子是什么? 我可以创建此代码,但出现错误: 代码 错误: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
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