def improved_brute_force(self): primes = list(sieve_of_eratosthenes(10000)) composites = set(range(3, 10000)) - set(primes) for composite in filter(lambda c: c % 2, composites): square = 0 while 2 * (square**2) <= composite: out = composite - 2 * square**2 if out in primes: break square += 1 else: return composite
def brute_force(self): primes = list(sieve_of_eratosthenes(10000)) primes.remove(1487) for start in primes: sequence = [start] for i in range(1, 5): if (s := start + (3330 * i)) in primes: sequence.append(s) else: break if len(sequence) == 3 and self.all_permutations(sequence): return ''.join(map(str, sequence))
def solution(self): # Best number, best cycle length best_n, best_c = 0, 0 # Only really need to check primes for i in sieve_of_eratosthenes(1000): # Infinite loop if i is divisible by 2 or 5 if i % 2 != 0 and i % 5 != 0: cn = self.cycle_length(i) # Keep track of max if best_c < cn: best_n = i best_c = cn return best_n
def brute_force(self): upper_bound = 1_000_000 primes = list(sieve_of_eratosthenes(4000)) max_length = 0 max_prime = 0 for start in range(len(primes)): current_length = 0 for end in range(start, len(primes)): s = sum(primes[start:end]) current_length += 1 if s > upper_bound: break elif simple_is_prime(s) and current_length > max_length: max_length = current_length max_prime = s return max_prime
def brute_force(self): primes = list(sieve_of_eratosthenes(10000)) composites = set(range(3, 10000)) - set(primes) for composite in filter(lambda c: c % 2, composites): success = False for prime in takewhile(lambda p: p < composite, primes): for square in range(1, int(composite**0.5)): out = prime + (2 * (square**2)) if composite == out: success = True break if success: break if not success: return composite
def prime(self): primes = sieve_of_eratosthenes(1000) n = 3 prime_divisors = 2 c = 0 while c <= 500: print(c) n += 1 n1 = n if n1 % 2 == 0: n1 /= 2 dn1 = 1 for prime in primes: if prime * prime > n1: dn1 *= 2 break exponent = 1 while n1 % prime == 0: exponent += 1 n1 /= prime if exponent > 1: dn1 *= exponent if n1 == 1: break c = prime_divisors * dn1 prime_divisors = dn1 return n * (n - 1) / 2
def sieve_of_eratosthenes(self, n=2_000_000): return sum(filter(lambda x: x <= n, sieve_of_eratosthenes(n)))
def eratosthenes_nth_prime(self, n=10001): # This is a mathmatical function which can approximately predict the limit for the nth prime # https://www.maa.org/sites/default/files/jaroma03200545640.pdf limit = round(n * log(n) + n * (log(log(n - 0.9385)))) return nth(sieve_of_eratosthenes(limit), n - 1)