python怎么求因数

Python (277) 2023-05-24 16:08:17

要想做到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
THE END

发表回复