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)
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")
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
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
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
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]
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)
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)
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)
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
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
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
def compute(): n = 1 count = 0 while count < 10001: n += 1 if eulerlib.is_prime(n): count += 1 return str(n)
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
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
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
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())
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)
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
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)
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]
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 p007(): i = 2 primes = [] while len(primes) < 10001: if eulerlib.is_prime(i): primes.append(i) i = i + 1 return primes
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
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
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)
def is_prime(n): if n < len(isprime): return isprime[n] else: return eulerlib.is_prime(n)
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)