def get_coin_factors(coinstring): factorstring = "" for base in range(2,11): value = int(coinstring, base) first_factor_info = next(pyprimes.factorise(value)) factorstring += "{} ".format(first_factor_info[0]) return factorstring.strip()
def worker(s, queue): ans = s for b in range(2, 11): num = base(s, b) factor = 0 if pyprimes.fermat(num): ans = 0 break with timeout(seconds=1): try: factor = pyprimes.factorise(num).next()[0] except: ans = 0 break if factor == num: ans = 0 break ans = ans + " " + str(factor) #factors = pyprimes.factors(num) #if len(factors) == 1: # ans = 0 # break #ans = ans +" "+ str(factors[0]) queue.put(ans)
def findEulerTotient(n): if (pyprimes.isprime(n)): return n - 1 et = n for (prime, power) in pyprimes.factorise(n): et *= (1 - 1.0 / prime) return et
def order_degree(n): rtv_o = 1 rtv_d = 1 for p, k in factorise(n): rtv_o *= p**(2 * k) + p**(2 * k - 1) + p**(2 * k - 2) rtv_d *= p**k + p**(k - 1) return rtv_o, rtv_d
def rad(n): facts = list(factorise(n)) facts = [x[0] for x in facts] product = 1 for num in facts: product *= num return product
def getSumOfSquares(n): sumOfDivisorSquares = 1 if (pyprimes.isprime(n)): sumOfDivisorSquares = 1 + n * n return sumOfDivisorSquares for (prime, power) in pyprimes.factorise(n): sumOfDivisorSquares *= (prime**(2 * power + 2) - 1) / (prime**2 - 1) return sumOfDivisorSquares
def main(): current = 2 while True: divisors = 1 for factor, count in pyprimes.factorise(sum(range(1, current))): divisors *= count + 1 if (divisors > 500-1): print sum(range(1, current)) break current += 1
def is_valid(self): self.d = odict() res = True for base in range(2, 11): kb = self.inbase(base) if pyprimes.isprime(kb): res = False break else: self.d[base] = pyprimes.factorise(kb).next()[0] return res
def is_new_record(order, degree): k = 1 while True: pks = list(pyprimes.factorise(degree - k)) if len(pks) == 1: break k += 1 p, k = pks[0] q = p**k o, d = q**2 + q + 1, q + 1 return order > o + (degree - d)
def r_prime_to(num, floor, ceiling): int_num = num num = num+0.0 factors_into = set() for x, exponent in factorise(24): for z in xrange(1,exponent+1): candidate = x**z print floor, candidate/num, ceiling # if candidate/num > floor and candidate < ceiling: # print 'cheese' factors_into.add(candidate) return factors_into
def fast_euler_phi(n, totients): if n == 2: return 1 if n % 2 == 0: if (n / 2) % 2 == 0: return 2 * totients[n / 2] else: return 1 * totients[n / 2] else: if pyprimes.isprime(n): return n-1 else: phi = 1 for (p, a) in pyprimes.factorise(n): phi *= (p ** (a-1)) * (p-1) return phi
def euler_phi(n): if n == 0: return 0 if n == 1: return 1 if n == 2: return 1 if n % 2 == 0: if (n / 2) % 2 == 0: phi_memo[n] = 2 * euler_phi(n / 2) else: phi_memo[n] = 1 * euler_phi(n / 2) else: if pyprimes.isprime(n): return n - 1 else: phi = 1 for (p, a) in pyprimes.factorise(n): phi *= (p ** (a - 1)) * (p - 1) phi_memo[n] = phi return phi_memo[n]
def check_proof_of_work(pow_hash, compact_bits, delta, DONT_CHECK): #if pow_hash == genesis_pow_hash: return True target, trailing_zeros = generate_prime_base(pow_hash, compact_bits) factorization = [] copy = target if FACTORIZE: yield "n = " t = time.time() for i, j in pyprimes.factorise(target): yield "({} ^ {}) * ".format(i,j) copy //= i ** j factorization.append((i, j)) if time.time() - t > 3: break yield "{} * 2 ^ {} + {}\n".format(copy, trailing_zeros, delta) factorization.append((copy, 1)) factorization.append((2, trailing_zeros)) target <<= trailing_zeros if trailing_zeros < 256: if delta >= 1 << trailing_zeros: raise Exception("candidate larger than allowed") target += delta if target % 210 != 97: raise Exception("not valid pow") def check(remaining): offset, nchecks_before, nchecks_after = remaining[0] if not is_prime(target + offset, nchecks_before, True): raise Exception("n+{0} not prime".format(offset)) if len(remaining) > 1: yield from check(remaining[1:]) if nchecks_after is not None and not is_prime(target + offset, nchecks_after, False): raise Exception("n+{0} not prime".format(offset)) yield "n+{0} = {1}\n".format(offset, target + offset) constellation = [(0, 1, 9), (4, 1, 9), (6, 1, 9), (10, 1, 9), (12, 1, 9), (16, 10, None)] if DONT_CHECK: yield [(factorization, delta), [(x[0], target + x[0]) for x in constellation]] else: yield from check(constellation) return True
def order(n): rtv = n**2 for (p,_) in pyprimes.factorise(n): rtv *= 1 + 1/p + 1/p**2 return round(rtv)
def get_factors(n): return pyprimes.factorise(n)
def get_divisors(n): divisors = [1] for prime, prime_count in pyprimes.factorise(n): divisors = [divisor * prime ** count for divisor in divisors for count in range(prime_count + 1)] return divisors
def degree(n): rtv = 1 for p, k in pyprimes.factorise(n): rtv *= p**k + p**(k - 1) return rtv
def countDivisors(testNum): product = 1 for num, exponent in pyprimes.factorise(testNum): product *= (exponent + 1) return product
#!/usr/bin/python from pyprimes import factorise n = 0 while True: n += 1 a = set(factorise(n)) if len(a) < 4: continue b = set(factorise(n+1)) if len(b) < 4: continue c = set(factorise(n+2)) if len(c) < 4: continue d = set(factorise(n+3)) if len(d) < 4: continue if len(a & b & c & d) == 0: print n break
raise Exception("timing out") signal.signal(signal.SIGALRM, handler) print "Case #1:" for n in xrange(minNum, maxNum + 1, 2): numList = [int(x) for x in list(bin(n))[2:]] # if n in BadList: # continue signal.alarm(t0) factList = [] * 0 for B in xrange(2, 11): num = listAsBase(numList, B) if pyprimes.isprime(num): break try: facts = pyprimes.factorise(num) factList.append(next(facts)[0]) except Exception, exc: break if len(factList) == 9: cnt = cnt + 1 print ''.join(map(str, list(bin(n))[2:])) + ' ' + ' '.join( map(str, factList)) if cnt >= J: break
def euler_phi(n): rtv = n for p, _ in pyprimes.factorise(n): rtv *= ( 1 - 1/p ) return round(rtv)
def order(n): rtv = 1 for p, k in pyprimes.factorise(n): rtv *= p**(k * 2) + p**(k * 2 - 1) + p**(k * 2 - 2) return rtv
#!/usr/bin/python from __future__ import print_function import re, sys, os import pyprimes if __name__ == "__main__": count = 0 for i in xrange(1, int(sys.argv[1]) - 1): PFOfi = [prime for prime in pyprimes.factorise(i)] PFOfiPlus1 = [prime for prime in pyprimes.factorise(i + 1)] numDivOfi = 1 for (primefactor, power) in PFOfi: numDivOfi *= (power + 1) # print(i,numDivOfi) numDivOfiPlus1 = 1 for (primefactor, power) in PFOfiPlus1: numDivOfiPlus1 *= (power + 1) if (numDivOfiPlus1 == numDivOfi): # print(i,i+1,numDivOfi) count += 1 print(count)
def degree(n): rtv = 1 for p, k in pyprimes.factorise(n): rtv *= p ** k + p ** (k - 1) return rtv
def order(n): rtv = n**2 for (p, _) in pyprimes.factorise(n): rtv *= 1 + 1 / p + 1 / p**2 return round(rtv)
def n_over_phi(n): rtv = 1 for p, k in factorise(n): rtv *= p / ( p - 1 ) return rtv
def phi(n): rtv = 1 for p, k in factorise(n): rtv *= p**(k-1) * (p-1) return rtv
def degree(n): rtv = n for (p, _) in pyprimes.factorise(n): rtv *= 1 + 1 / p return round(rtv)
def degree(n): rtv = n for (p,_) in pyprimes.factorise(n): rtv *= 1 + 1/p return round(rtv)
def order(n): rtv = 1 for p, k in pyprimes.factorise(n): rtv *= p ** (k * 2) + p ** (k * 2 - 1) + p ** (k * 2 - 2) return rtv
def is_squarefree(n): for prime, count in factorise(n): if count >= 2: return False return True