Example #1
0
def test_goldbach(n):
    if n % 2 == 0 or eulerlib.is_prime(n):
        return True
    for i in itertools.count(1):
        k = n - 2 * i * i
        if k <= 0:
            return False
        elif eulerlib.is_prime(k):
            return True
def test_goldbach(n):
    if n % 2 == 0 or eulerlib.is_prime(n):
        return True
    for i in itertools.count(1):
        k = n - 2 * i * i
        if k <= 0:
            return False
        elif eulerlib.is_prime(k):
            return True
def answer():
    ans = 1487
    while (True):
        ans += 2
        b = ans + 3330
        c = ans + 6660
        if (eulerlib.is_prime(ans) and eulerlib.is_prime(b)
                and eulerlib.is_prime(c) and eulerlib.is_perm(ans, b)
                and eulerlib.is_perm(b, c)):
            return str(ans) + str(b) + str(c)
Example #4
0
def compute():
    lim = 10000
    for base in range(1489, lim, 2):
        if eulerlib.is_prime(base):
            a = base + 3330
            b = a + 3330
            if b < lim and eulerlib.is_prime(a) and is_perm(a, base) \
                    and eulerlib.is_prime(b) and is_perm(b, base):
                return str(base) + str(a) + str(b)
    raise RuntimeError("Not found")
Example #5
0
def is_truncatable_prime(n):
    i = 10
    while i <= n:
        if not eulerlib.is_prime(n % i):
            return False
        i *= 10

    while n > 0:
        if not eulerlib.is_prime(n):
            return False
        n //= 10
    return True
 def find_harshad_primes(n, digitsum, isstrong):
     # Shift left by 1 digit, and try all 10 possibilities for the rightmost digit
     m = n * 10
     s = digitsum
     for i in range(10):
         if m >= LIMIT:
             break
         if isstrong and eulerlib.is_prime(m):
             ans[0] += m
         if m % s == 0:
             find_harshad_primes(m, s, eulerlib.is_prime(m // s))
         m += 1
         s += 1
Example #7
0
 def find_harshad_primes(n, digitsum, isstrong):
     # Shift left by 1 digit, and try all 10 possibilities for the rightmost digit
     m = n * 10
     s = digitsum
     for i in range(10):
         if m >= LIMIT:
             break
         if isstrong and eulerlib.is_prime(m):
             ans[0] += m
         if m % s == 0:
             find_harshad_primes(m, s, eulerlib.is_prime(m // s))
         m += 1
         s += 1
Example #8
0
def prime_factors(n):
    a = []
    t = n
    if eulerlib.is_prime(t):
        return [t]
    for p in eulerlib.list_primes(t):
        while t % p == 0:
            t /= p
            a.append(p)
        if eulerlib.is_prime(t):
            a.append(t)
            break

    return a
Example #9
0
def is_truncatable_prime(n):
	# Test if left-truncatable
	i = 10
	while i <= n:
		if not eulerlib.is_prime(n % i):
			return False
		i *= 10
	
	# Test if right-truncatable
	while n > 0:
		if not eulerlib.is_prime(n):
			return False
		n //= 10
	return True
Example #10
0
def is_truncatable_prime(n):
    # Test if left-truncatable
    i = 10
    while i <= n:
        if not eulerlib.is_prime(n % i):
            return False
        i *= 10

    # Test if right-truncatable
    while n > 0:
        if not eulerlib.is_prime(n):
            return False
        n //= 10
    return True
Example #11
0
def find(n: int):
    primes = [p for p in range(1237, 9874) if lib.is_prime(p)]
    primes = [((p, set(lib.digits(p))), (q, set(lib.digits(q)))) for p in primes for q in primes if q > p]

    arithm = {}

    answer = set()

    for P, Q in primes:
        p, dp = P
        q, dq = Q
        if dp != dq:
            continue
        else:
            key = (tuple(sorted(dp)), q - p)
            
            if key in arithm:
                arithm[key].update({p, q})
            else:
                arithm[key] = {p, q}

            if len(arithm[key]) == 3:
                s = int("".join(map(str, sorted(arithm[key]))))
                answer.add(s)
    else:
        return list(answer - {148748178147})[0]
Example #12
0
def ysec(n):
    # можно ли убрать слева
    i = 10
    while i <= n:
        if not eulerlib.is_prime(n % i):  #is_prime-проверка первичности
            return False
        i *= 10

    # можно ли убрать справа
    while n > 0:
        if not eulerlib.is_prime(n):
            return False
        n //= 10
    return True

    print(calc())
def compute():
	TARGET = fractions.Fraction(15499, 94744)
	totient = 1
	denominator = 1
	p = 2
	while True:
		totient *= p - 1
		denominator *= p
		# Note: At this point in the code, denominator is the product of one copy of each
		# prime number up to and including p, totient is equal to totient(denominator),
		# and totient/denominator = R'(2 * 3 * ... * p) (the pseudo-resilience).
		
		# Advance to the next prime
		while True:
			p += 1
			if eulerlib.is_prime(p):
				break
		
		# If the lower bound is below the target, there might be a suitable solution d such that
		# d's factorization only contains prime factors strictly below the current (advanced) value of p
		if fractions.Fraction(totient, denominator) < TARGET:
			# Try to find the lowest factor i such that R(i*d) < TARGET, if any.
			# Note that over this range of i, we have R'(d) = R'(i*d) < R(i*d).
			for i in range(1, p):
				numer = i * totient
				denom = i * denominator
				if fractions.Fraction(numer, denom - 1) < TARGET:
					return str(denom)
Example #14
0
def is_prime(n):
	if n < 0:
		return False
	elif n < len(isprimecache):
		return isprimecache[n]
	else:
		return eulerlib.is_prime(n)
Example #15
0
def compute():
    TARGET = fractions.Fraction(15499, 94744)
    totient = 1
    denominator = 1
    p = 2
    while True:
        totient *= p - 1
        denominator *= p
        # Note: At this point in the code, denominator is the product of one copy of each
        # prime number up to and including p, totient is equal to totient(denominator),
        # and totient/denominator = R'(2 * 3 * ... * p) (the pseudo-resilience).

        # Advance to the next prime
        while True:
            p += 1
            if eulerlib.is_prime(p):
                break

        # If the lower bound is below the target, there might be a suitable solution d such that
        # d's factorization only contains prime factors strictly below the current (advanced) value of p
        if fractions.Fraction(totient, denominator) < TARGET:
            # Try to find the lowest factor i such that R(i*d) < TARGET, if any.
            # Note that over this range of i, we have R'(d) = R'(i*d) < R(i*d).
            for i in range(1, p):
                numer = i * totient
                denom = i * denominator
                if fractions.Fraction(numer, denom - 1) < TARGET:
                    return str(denom)
Example #16
0
def is_prime(n):
    if n < 0:
        return False
    elif n < len(isprimecache):
        return isprimecache[n]
    else:
        return eulerlib.is_prime(n)
def answer():
    ans = 7654321 # biggest pandigital 7-digit number
    while not (eulerlib.is_prime(ans) and isPandigital(ans,len(str(ans)))):
        ans -= 2
        if(ans < 1000000):
            ans = 4321
    
    return str(ans)
Example #18
0
def compute():
    numprimes = 0
    for i in itertools.count(1, 2):
        for j in range(4):
            if eulerlib.is_prime(i * i - j * (i - 1)):
                numprimes += 1
        if i > 1 and numprimes * 10 < i * 2 - 1:
            return str(i)
Example #19
0
def test_is_prime():
    is_prime_cases = [
        (-1, False), (0, False), (1, False), (2, True), (3, True), (4, False),
        (5, True), (6, False), (7, True), (8, False), (9, False), (10, False),
        (11, True), (12, False)
    ]
    for inp, output in is_prime_cases:
        assert is_prime(inp) == output
Example #20
0
def prime_length(a: int, b: int, sieve: lib.Sieve = None):
    n = 0
    while True:
        k = f(n, a, b)
        if not lib.is_prime(k, sieve):
            return n
        else:
            n += 1
Example #21
0
def compute():
    numprimes = 0
    for i in itertools.count(1, 2):
        for j in range(4):
            if eulerlib.is_prime(i * i - j * (i - 1)):
                numprimes += 1
        if i > 1 and numprimes * 10 < i * 2 - 1:
            return str(i)
Example #22
0
def count_consecutive_primes(ab):
    a, b = ab
    for i in itertools.count():
        n = i * i + i * a + b
        if n < 0:
            return i
        elif not eulerlib.is_prime(n):
            return i
Example #23
0
def compute():
	n = 1
	count = 0
	while count < 10001:
		n += 1
		if eulerlib.is_prime(n):
			count += 1
	return str(n)
Example #24
0
def compute():
    n = 1
    count = 0
    while count < 10001:
        n += 1
        if eulerlib.is_prime(n):
            count += 1
    return str(n)
Example #25
0
def find(n):
    primes = [p for p in range(n) if lib.is_prime(p)]
    m = 0
    r = 0
    for i in range(len(primes)):
        k = 0
        s = 0
        for j in range(i, len(primes)):
            s += primes[j]
            if s > n:
                break
            if lib.is_prime(s):
                if k > m:
                    m = k
                    r = s
            k += 1
    return r
Example #26
0
def fun(n):
    if (is_prime(n) or math.gcd(n, 10) != 1):
        return 0
    repunit = 1
    len_rep = 1
    while (repunit % n != 0):
        repunit = (repunit * 10 + 1) % n
        len_rep += 1
    return len_rep
Example #27
0
def pe0041():
    print 'Project Euler Problem 41 https://projecteuler.net/problem=41'
    for i in range(7, 0, -1):
        pan_perms = tuple(permutations(range(1, i + 1), i))[::-1]
        for pan in pan_perms:
            p = int(''.join(str(c) for c in pan))
            if eulerlib.is_prime(p):
                print 'Answer is %d' % p
                return
Example #28
0
def is_prime(n):
    if n < 0:
        return False
    elif n < len(main_c):
        return main_c[n]
    else:
        return eulerlib.is_prime(n)

    print(calc())
Example #29
0
def compute():
	TARGET = fractions.Fraction(1, 10)
	numprimes = 0
	for n in itertools.count(1, 2):
		for i in range(4):
			if eulerlib.is_prime(n * n - i * (n - 1)):
				numprimes += 1
		if n > 1 and fractions.Fraction(numprimes, n * 2 - 1) < TARGET:
			return str(n)
def compute():
    TARGET = fractions.Fraction(1, 10)
    numprimes = 0
    for i in itertools.count(1, 2):
        for j in range(4):
            if eulerlib.is_prime(i * i - j * (i - 1)):
                numprimes += 1
        if i > 1 and fractions.Fraction(numprimes, i * 2 - 1) < TARGET:
            return str(i)
def compute():
	ans = 0
	count = 0
	for i in itertools.count(2):
		if eulerlib.is_prime(i) and repunit_mod(10**9, i) == 0:
			ans += i
			count += 1
			if count == 40:
				return str(ans)
Example #32
0
def calc():
		a = list(reversed(range(1, n + 1)))
		while True:
			if a[-1] not in last:
				n = int("".join(str(x) for x in a))
				if eulerlib.is_prime(n):
					return str(n)
			if not per(a):
				break
Example #33
0
def compute():
    TARGET = fractions.Fraction(1, 10)
    numprimes = 0
    for n in itertools.count(1, 2):
        for i in range(4):
            if eulerlib.is_prime(n * n - i * (n - 1)):
                numprimes += 1
        if n > 1 and fractions.Fraction(numprimes, n * 2 - 1) < TARGET:
            return str(n)
Example #34
0
def compute():
    ans = 0
    found = 0
    for i in itertools.count(7, 2):
        if i % 5 != 0 and not eulerlib.is_prime(i) and (i - 1) % find_least_divisible_repunit(i) == 0:
            ans += i
            found += 1
            if found == 25:
                return str(ans)
def compute():
    ans = 0
    found = 0
    for i in itertools.count(7, 2):
        if i % 5 != 0 and not eulerlib.is_prime(i) and (
                i - 1) % find_least_divisible_repunit(i) == 0:
            ans += i
            found += 1
            if found == 25:
                return str(ans)
Example #36
0
def compute():
    for i in range(9, 0, -1):
        arr = list(range(i, 0, -1))
        while True:
            if i == 1 or arr[-1] not in NONPRIME_LAST_DIGITS:
                n = int("".join([str(x) for x in arr]))
                if eulerlib.is_prime(n):
                    return str(n)
            if not prev_permutation(arr):
                break
Example #37
0
def num_prime_sum_ways(n):
    for i in range(primes[-1] + 1, n + 1):
        if eulerlib.is_prime(i):
            primes.append(i)

    ways = [1] + [0] * n
    for p in primes:
        for i in range(n + 1 - p):
            ways[i + p] += ways[i]
    return ways[n]
Example #38
0
def compute():
	sum = 0
	count = 0
	i = 2
	while count < 40:
		if eulerlib.is_prime(i) and repunit_mod(10**9, i) == 0:
			sum += i
			count += 1
		i += 1
	return str(sum)
def compute():
	for i in range(9, 0, -1):
		arr = list(range(i, 0, -1))
		while True:
			if i == 1 or arr[-1] not in NONPRIME_LAST_DIGITS:
				n = int("".join(str(x) for x in arr))
				if eulerlib.is_prime(n):
					return str(n)
			if not prev_permutation(arr):
				break
def num_prime_sum_ways(n):
	for i in range(primes[-1] + 1, n + 1):
		if eulerlib.is_prime(i):
			primes.append(i)
	
	ways = [1] + [0] * n
	for p in primes:
		for i in range(n + 1 - p):
			ways[i + p] += ways[i]
	return ways[n]
Example #41
0
def p007():

    i = 2
    primes = []
    while len(primes) < 10001:
        if eulerlib.is_prime(i):
            primes.append(i)
        i = i + 1

    return primes
Example #42
0
 def get_family_count(mk, n, d):
     count = 1
     num = list(str(n))
     for i in range(d + 1, 10):
         for j in range(0, len(mk)):
             if not mk[j]:
                 num[j] = str(i)
         if eulerlib.is_prime(int(''.join(x for x in num))):
             count += 1
     return count
Example #43
0
def divisor(n):
    cond=False
    for i in range(1,int(math.sqrt(n))+1):
        if(n%i==0):
            if(l.is_prime(i+n//i)):
                cond=True
            else:
                print(n)
                cond=False
                break
    return cond
Example #44
0
def compute():
	TARGET = 2000  # Must be at least 3
	count = 2  # Because n = 1 and 2 satisfy PD(n) = 3
	for ring in itertools.count(2):
		if eulerlib.is_prime(ring * 6 - 1) and eulerlib.is_prime(ring * 6 + 1) and eulerlib.is_prime(ring * 12 + 5):
			count += 1
			if count == TARGET:
				return str(ring * (ring - 1) * 3 + 2)
		if eulerlib.is_prime(ring * 6 - 1) and eulerlib.is_prime(ring * 6 + 5) and eulerlib.is_prime(ring * 12 - 7):
			count += 1
			if count == TARGET:
				return str(ring * (ring + 1) * 3 + 1)
Example #45
0
	def is_prime(n):
		if n < len(isprime):
			return isprime[n]
		else:
			return eulerlib.is_prime(n)
Example #46
0
def compute():
    # Among the integers starting from 2, take the sum of
    # the first 40 integers satisfying the filter condition
    cond = lambda i: eulerlib.is_prime(i) and repunit_mod(10 ** 9, i) == 0
    ans = sum(itertools.islice(filter(cond, itertools.count(2)), 40))
    return str(ans)
def compute():
	cond = lambda i: (i % 5 != 0) and (not eulerlib.is_prime(i)) \
		and ((i - 1) % find_least_divisible_repunit(i) == 0)
	ans = sum(itertools.islice(filter(cond, itertools.count(7, 2)), 25))
	return str(ans)