我正在创建一个程序来检查数字numb
是否为素数,如果不是,那么它将数字分解为素数并打印出因子,但问题会因大数而失败。
for n in primes:
if numb % n == 0:
a = 0
while numb % n == 0:
a += 1
factors[n] = a
prime = False
numb = numb / n
当numb
很大(长18位)时,程序在numb = numb / n
失败并且没有正确划分(例如231351651321912318/2 = 1.1567582566095616e + 17)
数字总是应该除以任何小数位,所以我可以使结果更准确吗?
答案 0 :(得分:1)
运算符/
调用浮点除法,这会导致操作数被划分为浮点数。 18位数处于浮点精度的极限。对于整数除法,请改为使用//
。