Exemplo n.º 1
0
    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
Exemplo n.º 2
0
    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))
Exemplo n.º 3
0
    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
Exemplo n.º 4
0
    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
Exemplo n.º 5
0
    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
Exemplo n.º 6
0
    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
Exemplo n.º 7
0
 def sieve_of_eratosthenes(self, n=2_000_000):
     return sum(filter(lambda x: x <= n, sieve_of_eratosthenes(n)))
Exemplo n.º 8
0
 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)