Python 如何更准确地划分大数字
我正在创建一个程序,检查numb是否为素数,如果不是,则将该数字分解为素数并打印出因子,但对于大的数字,该问题失败Python 如何更准确地划分大数字,python,primes,division,Python,Primes,Division,我正在创建一个程序,检查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是大的1
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处失败,并且不能正确划分,例如23135165132291318/2=1.15675582566095616e+17
数字总是应该不带任何小数位数地进行除法,这样才能使结果更准确?运算符/调用浮点除法,从而使操作数被除法为浮点数。18位处于浮点精度的极限。对于整数除法,请使用//。您可以使用numb//n,因为您已经知道numb%n==0BTW,因子[n]=a和prime=False不需要在while循环中。