要想做到python語言求因數方法,首先要明白其中的原理:
1、對由123456789這九個數字組成的9位數進行分解質因數。
2、123457698=2x3x3x7x13x23x29x113,所以他的值因數是113。
3、總共有362880種可能,從中找出值因數中最小的數字和值因數中數。
好了,下面來看看python語言求因數方法的實現源碼:
#coding:utf-8import?mathdef?generator(count,?s):if?count?==?1:for?i?in?s:yield?ielse:for?i?in?s:_?=?set(s)_.remove(i)for?_?in?generator(count-1,?_):yield?_?*?10?+?iprimes?=?[2,?3] def?prime(idx):if?idx?<?len(primes):return?primes[idx]new?=?primes[-1]+2while?True:for?i?in?primes:if?new?%?i?==?0:breakelse:primes.append(new)breaknew?+=?2return?prime(idx)def?probe(number,?idx,?value=0):if?value?>?number:return?valuep?=?prime(idx)sqrt?=?math.sqrt(number)while?number?%?p?!=?0?and?sqrt?>=?p:idx?+=?1p?=?prime(idx)if?sqrt?<?p:return?numberreturn?probe(number/p,?idx,?max(p,?value))? if?__name__?==?'__main__':_min?=?10000000000,?10000000000_max?=?0,?0for?number?in?generator(9,?set(range(1,?10))):maxfactor?=?probe(number,?0)if?maxfactor?<?_min[0]:_min?=?maxfactor,?[number]elif?maxfactor?==?_min[0]:_min[1].append(number)if?maxfactor?>?_max[0]:_max?=?maxfactor,?[number]elif?maxfactor?==?_max[0]:_max[1].append(number)print?_minprint?_max