def candidate_triplets(): """ just solving the special case of 3330-separated primes """ sieve = prime.get_primes_up_to(10000) for i in range(1000, 10000): if i in sieve and i + 3330 in sieve and i + 6660 in sieve: yield (i, i+3330, i+6660)
def get_least_violation(): global primes primes = prime.get_primes_up_to(int(1e6)) for i in itertools.count(start=1, step=2): if is_composite(i): for residual in get_residuals(i): if residual / 2 == residual // 2: sq = math.sqrt(residual // 2) if math.floor(sq) == sq: break else: return i
def get_next_quad(): prev_max = 0 current_max = int(1e6) while True: primes = prime.get_primes_up_to(current_max) composites = [i for i in range(prev_max, current_max) if i not in primes] for i, comp in enumerate(composites): if composites[i+3] - comp == 3: yield comp prev_max = current_max current_max *= 10
def make_n2_sum(n): sum_lengths = Counter() prime_set = prime.get_primes_up_to(n) sorted_primes = sorted(prime_set) sums = [0] current_sum = 0 for p in sorted_primes: current_sum += p sums.append(current_sum) max_length = 0 for p in sorted_primes: for length, prime_sum in enumerate(sums): if max_length < length and prime_sum in prime_set: max_length = length sum_lengths[prime_sum] = max(sum_lengths[prime_sum], length) sums = [i - p for i in sums[1:]] if len(sums) < max_length: break return sum_lengths
#!/usr/bin/env python3 import prime def generate_rotations(n): digits = [d for d in str(n)] rotations = set() for i in range(len(digits) - 1): digits = [digits[-1]] + digits[:-1] rotations.add(int(''.join(digits))) return rotations if __name__ == '__main__': circular = [] primes = prime.get_primes_up_to(int(1e6)) while primes: p = primes.pop() rotations = generate_rotations(p) # special case for 11 if len(rotations) > 0 and next(iter(rotations)) == p: circular.append(p) elif primes & rotations == rotations: print(p, rotations) circular.append(p) circular += rotations primes -= rotations print(circular) print(len(circular))
def test_sieve_some_primes(self): sieve = prime.get_primes_up_to(max(self.sample_primes)) self.assertFalse(self.sample_primes - sieve)