Guest User

primefactors

a guest
May 16th, 2018
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.10 KB | None | 0 0
  1. from typing import List, Any
  2.  
  3.  
  4. class primes:
  5.  
  6.     def __init__(self):
  7.         self.primescache = [2]
  8.         self.lastnumber = 2
  9.  
  10.     def generate(self, n: int):
  11.         if n < self.lastnumber: return
  12.  
  13.         for i in range(self.lastnumber, n):
  14.             if i % 2 == 0: continue
  15.             if self.check(i) == 1: self.primescache.append(i)
  16.  
  17.         self.lastnumber = n
  18.  
  19.     def check(self, n: int):
  20.         if n <= self.lastnumber: return (n in self.primescache)
  21.  
  22.         c: int = 1
  23.  
  24.         if n < 2: return bool(0)
  25.         if n == 2: return bool(1)
  26.  
  27.         if ((n % 2) == 0) and (n > 2): return bool(0)
  28.  
  29.         for i in range(3, int(n / 2)):
  30.             if n % i == 0:
  31.                 c = 0
  32.                 break
  33.             else:
  34.                 continue
  35.  
  36.         return bool(c)
  37.  
  38.     def getlist(self, n):
  39.         list = []
  40.         self.generate(n)
  41.         for i in self.primescache:
  42.             if i <= n: list.append(i)
  43.         return list
  44.  
  45.  
  46. def getprimefactors(n):
  47.     nc = n
  48.     p1 = primes()
  49.     pf = []
  50.  
  51.     while nc > 1:
  52.         for i in p1.getlist(nc):
  53.             if nc % i == 0:
  54.                 nc /= i
  55.                 pf.append(i)
  56.                 break
  57.  
  58.     return pf
  59.  
  60.  
  61. def main():
  62.     p1 = primes()
  63.     while 1:
  64.         i = int(input())
  65.         print(getprimefactors(i))
  66.  
  67.  
  68. if __name__ == "__main__":    main()
Add Comment
Please, Sign In to add comment