我收到一位读者的电子邮件,他在上找到了我的保理程序堆栈溢出:
Python 2.7.13(默认,2017年3月13日20:56:15)cygwin上的[GCC 5.4.0]键入“help”、“copyright”、“credits”或“license”以获取更多信息。>>>def isPrime(n,k=5):#miller-rabin…从随机导入randint…如果n<2:返回False…对于[2,3,5,7,11,13,17,19,23,29]中的p:…如果n%p==0:返回n==p…s,d=0,n-1…当d%2==0时:…s,d=s+1,d/2…对于范围(k)中的i:…x=功率(randint(2,n-1),d,n)…如果x==1或x==n-1:继续…对于范围(1,s)中的r:…x=(x*x)%n…如果x==1:返回False…如果x==n-1:断裂…else:返回False…返回True...>>>def因子(n,b2=-1,b1=10000):#2,3,5-后跟,然后是rho…def gcd(a,b):#euclid算法…如果b==0:返回a…返回gcd(b,a%b)…def insertSorted(x,xs):#线性搜索…i,ln=0,len(xs)…而i<ln和xs[i]<x:i+=1…xs.插入(i,x)…返回xs…如果-1<=n<=1:返回[n]…如果n<-1:返回[-1]+因子(-n)…车轮=[1,2,2,4,2,4,2,4,4,2,6,6]…w,f,fs=0,2,[]…当f*f<=n且f<b1时:…当n%f==0时:…fs.追加(f)…n/=f…f,w=f+车轮[w],w+1…如果w==11:w=3…如果n==1:返回fs…h,t,g,c=1,1,1…当不为Prime(n)时:…当b2<>0且g==1时:…h=(h*h+c)%n#兔子跑…h=(h*h+c)%n#速度的两倍…t=(t*t+c)%n#作为乌龟…g=gcd(t-h,n);b2-=1…如果b2==0:返回fs…如果是Prime(g):…当n%g==0时:…fs=插入排序(g,fs)…n/=克…h,t,g,c=1,1,1,c+1…返回insertSorted(n,fs)
他抱怨说,程序未能对数字100011322432435545进行因子分析,而是进入了无限循环,而不是返回因子列表。
你的任务是找出问题所在并加以解决阅读或运行建议的解决方案,或在下面的评论中发布自己的解决方案或讨论练习。
页:1 2