2018年5月6日 星期日

Eratosthenes篩選求質數 (using python)

  1. """ 
  2. Eratosthenes篩選求質數 
  3. """  
  4. import math  
  5. def createPrims(n):  
  6.   ps = [1]*n  
  7.   for v in range(2,int(math.sqrt(n))) :  
  8.     if ps[v] :  
  9.       for j in range(v*2,n) :  
  10.         if not j%v :  
  11.            ps[j]=0  
  12.   return [i for i in range(2,n) if ps[i]==1]  
  13.   
  14.   
  15. def factor(n,prims):  
  16.   if prims[0] > int(math.sqrt(n)) :#當除數>n的立方  
  17.     return [prims[0]]  
  18.   else:  
  19.     return ([prims[0]]+factor(n//prims[0],prims) if not n%prims[0else factor(n,prims[1:]))  
  20.     
  21.     
  22. # n數需要質數n/2個質數進行因式分解  
  23. for v in factor(100,createPrims(100//2)):  
  24.   print(str(v),end=',')  

沒有留言:

張貼留言

注意:只有此網誌的成員可以留言。