要想做到python语言求因数方法,首先要明白其中的原理:
1、对由123456789这九个数字组成的9位数进行分解质因数。
2、123457698=2x3x3x7x13x23x29x113,所以他的值因数是113。
3、总共有362880种可能,从中找出值因数中最小的数字和值因数中数。
相关推荐:《Python入门教程》
好了,下面来看看python语言求因数方法的实现源码:
#coding:utf-8 importmath defgenerator(count,s): ifcount==1: foriins: yieldi else: foriins: _=set(s) _.remove(i) for_ingenerator(count-1,_): yield_*10+i primes=[2,3] defprime(idx): ifidx<len(primes): returnprimes[idx] new=primes[-1]+2 whileTrue: foriinprimes: ifnew%i==0: break else: primes.append(new) break new+=2 returnprime(idx) defprobe(number,idx,value=0): ifvalue>number: returnvalue p=prime(idx) sqrt=math.sqrt(number) whilenumber%p!=0andsqrt>=p: idx+=1 p=prime(idx) ifsqrt<p: returnnumber returnprobe(number/p,idx,max(p,value)) if__name__=='__main__': _min=10000000000,10000000000 _max=0,0 fornumberingenerator(9,set(range(1,10))): maxfactor=probe(number,0) ifmaxfactor<_min[0]: _min=maxfactor,[number] elifmaxfactor==_min[0]: _min[1].append(number) ifmaxfactor>_max[0]: _max=maxfactor,[number] elifmaxfactor==_max[0]: _max[1].append(number) print_min print_max