示例#1
0
def totient( n, primes ):
    pFs = primeFactors( n, primes )
    ppFm = primePowerFactorization( pFs )
    ppFmKeys = ppFm.keys()
    totient = n
    for primeFactor in ppFmKeys:
        totient = totient - totient / primeFactor
    return totient
示例#2
0
def sumFactors(n):
    if isPrime(n, primes):
        return 1
    ps = primeFactors(n, primes)
    pPowers = primePowerFactorization(ps)
    sum = 1
    for p in pPowers.keys():
        sum *= (p**(pPowers[p] + 1) - 1) // (p - 1)
    return sum - n
示例#3
0
def solve(limit):
    best = None
    i = 94744
    while 1:
        i += 1
        r = resiliance_frac(i)
        if r == 0:
            continue
        if not best or r <= best:
            best = r
            print i, best, float(best), euler.primeFactors(i)
        if r < limit:
            break
示例#4
0
def ka(n):
    factor2powers = list()
    factor2power = primePowerFactorization(primeFactors(n, PRIMES))
    factor2powers.append(factor2power)
    #print( factor2powers )
    ka = set()
    ka.add(toK(factor2power))
    j = reduce(add, [factor2power[factor]
                     for factor in factor2power.keys()])  # # of factors in n
    while j > 0:
        factor2powers0 = deepcopy(factor2powers)
        k2factor2powers = dict({})
        for factor2power0 in factor2powers0:
            for factors in combinations_with_replacement(
                    factor2power0.keys(), 2):
                if factors[0] == factors[1] and factor2power0[factors[0]] == 1:
                    continue
                else:
                    factor2power = deepcopy(factor2power0)
                    factor = factors[0] * factors[1]
                    for i in [0, 1]:
                        factor2power[factors[i]] -= 1
                        if factor2power[factors[i]] == 0:
                            del factor2power[factors[i]]
                    if factor in factor2power.keys():
                        factor2power[factor] += 1
                    else:
                        factor2power[factor] = 1
                    k = toK(factor2power)
                    if k in k2factor2powers:
                        k2factor2powers[k].append(factor2power)
                    else:
                        k2factor2powers[k] = [factor2power]
        factor2powers = list()
        for k in k2factor2powers.keys():
            ka.add(k)
            factor2powers.extend(uniqueFactor2Powers(k2factor2powers[k]))
        #print( factor2powers )
        j -= 1
    return ka
示例#5
0
#!/usr/bin/python

from euler import appendToPrimes, primeFactors, primePowerFactorization

PRIMES = []
UPPER = 10**6
appendToPrimes(UPPER, PRIMES)

m = 2  # current test
foursome = 0
while foursome != m:
    foursome = m
    for j in range(m, m + 4):
        dict = primePowerFactorization(primeFactors(j, PRIMES))
        if len(dict.keys()) != 4:
            m = j + 1
            break

print(foursome)
示例#6
0
import euler

#print euler.ncr(1,0),euler.ncr(1,1)
#print euler.ncr(2,0),euler.ncr(2,1)


def pascal(rows):
    return [euler.ncr(rows, i) for i in range(rows + 1)]


def pascalUnique(nrows):
    lst = []
    for i in range(nrows):
        lst += pascal(i)
    lst = set(lst)
    lst = list(lst)
    return lst


lst = pascalUnique(50)
lst.sort()
for i, item in enumerate(lst):
    print i, len(lst), item, euler.primeFactors(item)
示例#7
0
def rad(n):
    return euler.product(euler.primeFactors(n))
示例#8
0
n = 20

primes0 = [2, 3, 5, 7, 11, 13, 17, 19]
primes = []
euler.appendToPrimes(n, primes)
assert primes == primes0

n = 30

euler.appendToPrimes(n, primes)
primes0 += [23, 29]
assert primes == primes0

primeFactors0 = [2, 5, 23]
primeFactors = euler.primeFactors(230, primes)
assert primeFactors == primeFactors0

primeFactors0 = [2, 2, 3, 3]
primeFactors = euler.primeFactors(36, primes)
assert primeFactors == primeFactors0

primePowerFactorization0 = {2: 2, 3: 2}
primePowerFactorization = euler.primePowerFactorization(primeFactors)
assert primePowerFactorization0 == primePowerFactorization

assert (euler.descendingFactorial(5, 2) == 20)
assert (euler.descendingFactorial(5, 3) == 60)
assert (euler.ascendingFactorial(5, 2) == 30)
assert (euler.ascendingFactorial(5, 3) == 210)
示例#9
0
#!/usr/bin/python

from euler import readPrimes, primeFactors, primePowerFactorization
from operator import mul
from functools import reduce

UPPER = 1000 

primes = readPrimes( UPPER )

d0 = 1

for n in range( 2, UPPER ):
    pfs = primeFactors(n, primes)
    p2power = primePowerFactorization(pfs)
    values = list( p2power.values() )
    if len( values ) == 1:
        sigma0 = 1 + values[ 0 ]
    else:       
        sigma0 = reduce( mul, [ (1 + value ) for value in values ] )
    if d0 < sigma0:
        d0 = sigma0
        print( n )
示例#10
0
import euler

# print euler.ncr(1,0),euler.ncr(1,1)
# print euler.ncr(2,0),euler.ncr(2,1)


def pascal(rows):
    return [euler.ncr(rows, i) for i in range(rows + 1)]


def pascalUnique(nrows):
    lst = []
    for i in range(nrows):
        lst += pascal(i)
    lst = set(lst)
    lst = list(lst)
    return lst


lst = pascalUnique(50)
lst.sort()
for i, item in enumerate(lst):
    print i, len(lst), item, euler.primeFactors(item)
示例#11
0
def oldhamming(n, m):
    return max(euler.primeFactors(n)) <= m
示例#12
0
def oldhamming( n, m ):
    return max(euler.primeFactors(n)) <= m