In [2]:
from functools import reduce
from gmpy2 import is_prime
import numpy
from math import sqrt
import itertools
In [3]:
def fib_gen(limit=None, a=None, b=None):
if a is None:
a = 1
yield a
if b is None:
b = 1
yield b
while (limit is None or b <= limit):
a, b = b, a+b
yield b
In [46]:
def factorization(n):
if is_prime(n):
return([n])
result = []
new_n = n
for p in primesfrom2to(n//2 + 1):
if p > new_n:
break
while True:
if new_n % p == 0:
result.append(p)
new_n = new_n // p
else:
break
return result
In [47]:
# http://stackoverflow.com/a/3035188/2597564
def primesfrom2to(n):
""" Input n>=6, Returns a array of primes, 2 <= p < n """
sieve = numpy.ones(n//3 + (n%6==2), dtype=numpy.bool)
for i in range(1,int(n**0.5)//3+1):
if sieve[i]:
k=3*i+1|1
sieve[ k*k//3 ::2*k] = False
sieve[k*(k-2*(i&1)+4)//3::2*k] = False
return numpy.r_[2,3,((3*numpy.nonzero(sieve)[0][1:]+1)|1)]
In [1]:
# http://stackoverflow.com/a/19578818/2597564
def factors(n):
step = 2 if n%2 else 1
return set(reduce(list.__add__,
([i, n//i] for i in range(1, int(sqrt(n))+1, step) if n % i == 0)))
In [3]:
def triangle_gen():
count = 0
for i in itertools.count(start=1):
count += i
yield count
In [ ]: