Exemplo n.º 1
0
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()
Exemplo n.º 2
0
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)
Exemplo n.º 3
0
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
Exemplo n.º 4
0
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
Exemplo n.º 5
0
def rad(n):
    facts = list(factorise(n))
    facts = [x[0] for x in facts]
    product = 1
    for num in facts:
        product *= num
    return product
Exemplo n.º 6
0
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
Exemplo n.º 7
0
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
Exemplo n.º 8
0
 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
Exemplo n.º 9
0
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)
Exemplo n.º 10
0
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
Exemplo n.º 11
0
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
Exemplo n.º 12
0
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]
Exemplo n.º 13
0
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
Exemplo n.º 14
0
def order(n):
  rtv = n**2
  for (p,_) in pyprimes.factorise(n):
    rtv *= 1 + 1/p + 1/p**2
  return round(rtv)
Exemplo n.º 15
0
def get_factors(n):
    return pyprimes.factorise(n)
Exemplo n.º 16
0
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
Exemplo n.º 17
0
def degree(n):
    rtv = 1
    for p, k in pyprimes.factorise(n):
        rtv *= p**k + p**(k - 1)
    return rtv
Exemplo n.º 18
0
def countDivisors(testNum):
	product = 1
	for num, exponent in pyprimes.factorise(testNum):
		product *= (exponent + 1)
	return product
Exemplo n.º 19
0
#!/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
Exemplo n.º 20
0
    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
Exemplo n.º 21
0
def euler_phi(n):
  rtv = n
  for p, _ in pyprimes.factorise(n):
    rtv *= ( 1 - 1/p )
  return round(rtv)
Exemplo n.º 22
0
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
Exemplo n.º 23
0
#!/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)
Exemplo n.º 24
0
def degree(n):
    rtv = 1
    for p, k in pyprimes.factorise(n):
        rtv *= p ** k + p ** (k - 1)
    return rtv
Exemplo n.º 25
0
def order(n):
    rtv = n**2
    for (p, _) in pyprimes.factorise(n):
        rtv *= 1 + 1 / p + 1 / p**2
    return round(rtv)
Exemplo n.º 26
0
def n_over_phi(n):
  rtv = 1
  for p, k in factorise(n):
    rtv *= p / ( p - 1 )
  return rtv
Exemplo n.º 27
0
def phi(n):
  rtv = 1
  for p, k in factorise(n):
    rtv *= p**(k-1) * (p-1)
  return rtv
Exemplo n.º 28
0
def degree(n):
    rtv = n
    for (p, _) in pyprimes.factorise(n):
        rtv *= 1 + 1 / p
    return round(rtv)
Exemplo n.º 29
0
def degree(n):
  rtv = n
  for (p,_) in pyprimes.factorise(n):
    rtv *=  1 + 1/p 
  return round(rtv)
Exemplo n.º 30
0
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
Exemplo n.º 31
0
def is_squarefree(n):
    for prime, count in factorise(n):
        if count >= 2:
            return False
    return True