Python 3.x 模循环在23阶乘处失败

Python 3.x 模循环在23阶乘处失败,python-3.x,factorial,Python 3.x,Factorial,下面的代码一直工作到22!但是失败了23 你能看到任何会导致意外结果的舍入吗 它的作用: FindTime-->返回素数列表 因子-->计算“num!”(因子) 分解-->返回一个字符串(一个等式),显示与阶乘结果相等的素数乘积 def findprimes(num): nonprimes=[0,1] for i in range(num+2): for k in range((i)): if(i+2)%(k+2)==0: nonprime

下面的代码一直工作到22!但是失败了23

你能看到任何会导致意外结果的舍入吗

它的作用:
FindTime-->返回素数列表
因子-->计算“num!”(因子)
分解-->返回一个字符串(一个等式),显示与阶乘结果相等的素数乘积

def findprimes(num):
    nonprimes=[0,1]
for i in range(num+2):
    for k in range((i)):
        if(i+2)%(k+2)==0:
            nonprimes.append(i+2)
return [c for c in range(i) if c not in set(nonprimes)]

def factor(num):
    factorial=1
    for i in range(num):
        factorial=factorial*(i+1)
    return factorial

def breakdown(num):
    answer=[]
    iter_me=findprimes(num)
    remains=factor(num)
    for i in range(len(iter_me)):
        k=0
        tot=0
        while remains%iter_me[i]==0:
            remains=int(remains/iter_me[i])
            k+=1
        if k>1:
#            print(k)
            answer.append(str(str(iter_me[i])+'^'+str(k)+' * '))
        else:
            answer.append(str(str(iter_me[i])+' * '))

    return ''.join(answer).rstrip('* ')


#breakdown lower that 23 works!!!
print(breakdown(23))
应该是

remains=int(remains//iter_me[i])

您遇到了什么错误?回答错误:)打印(细目(25))应返回“2^22*3^10*5^6*7^3*11^2*13*17*19*23“为什么这很重要?
/
在python中的意思是,这意味着它将被取整。例如
10/4=2.5
vs
10//4=2
。所以,当OP说它只适用于小于23的数字时,我感觉它和除法有关。也许其他人能解释清楚为什么这很重要…太棒了,谢谢!虽然我不相信“它为什么会起作用”@LeeGaines:我知道
/
的意思,但
int()
也有floor,所以应该是多余的。换句话说,
int(10/4)
是2,正如
int(10//4)
是2。在第一次迭代中:
x_剩余=7755605016665493027651584
with
/
y_剩余=7755605016665492992000000
with
//code>
int(x_剩余)==int(y_剩余)
返回
False
remains=int(remains//iter_me[i])