def main(max_number): summation = 0 prime_generator = generate_next_prime(start=5) first_prime = prime_generator.next() while first_prime <= max_number: second_prime = prime_generator.next() # we have the two following congruence relations: # x = 0 (mod second_prime) # x = first_prime(mod 10 ** (int(log10(first_prime)) + 1)) # so we use the Chinese Remainder Theorem to solve for x. # thanks to Eigenray from http://projecteuler.net/thread=134 # for the suggestion to use CRT. modulos = (second_prime, (10 ** (int(log10(first_prime)) + 1)),) remainders = (0, first_prime,) summation += crt(modulos, remainders) #print first_prime, second_prime, residual first_prime = second_prime print "Sum(S) : %d" % summation
def main(): # it's hard to know whether a number even # has a given number of prime factors # (avg case is ln ln n). so, disallow # the user from inputting a given number # of prime factors to find like I might normally do. repunit_length = 10 ** 9 number_of_primes_to_find = 40 prime_factors = set() primes = generate_next_prime() while len(prime_factors) != number_of_primes_to_find: new_prime = primes.next() # a base-10 repunit is formed via the following forumula: # (10 ** (number of digits) - 1) / (10 - 1) # we use modular exponentiation to see whether # 10 ** (number of digits) is divisible by 9 * some prime # with remainder 1. if pow(10, repunit_length, 9 * new_prime) == 1: prime_factors.add(new_prime) print "Sum of first %d factors: %d" % (number_of_primes_to_find, sum(prime_factors))
def main(): # it's hard to know whether a number even # has a given number of prime factors # (avg case is ln ln n). so, disallow # the user from inputting a given number # of prime factors to find like I might normally do. repunit_length = 10**9 number_of_primes_to_find = 40 prime_factors = set() primes = generate_next_prime() while len(prime_factors) != number_of_primes_to_find: new_prime = primes.next() # a base-10 repunit is formed via the following forumula: # (10 ** (number of digits) - 1) / (10 - 1) # we use modular exponentiation to see whether # 10 ** (number of digits) is divisible by 9 * some prime # with remainder 1. if pow(10, repunit_length, 9 * new_prime) == 1: prime_factors.add(new_prime) print "Sum of first %d factors: %d" % (number_of_primes_to_find, sum(prime_factors))
def main(max_number): summation = 0 prime_generator = generate_next_prime(start=5) first_prime = prime_generator.next() while first_prime <= max_number: second_prime = prime_generator.next() # we have the two following congruence relations: # x = 0 (mod second_prime) # x = first_prime(mod 10 ** (int(log10(first_prime)) + 1)) # so we use the Chinese Remainder Theorem to solve for x. # thanks to Eigenray from http://projecteuler.net/thread=134 # for the suggestion to use CRT. modulos = ( second_prime, (10**(int(log10(first_prime)) + 1)), ) remainders = ( 0, first_prime, ) summation += crt(modulos, remainders) #print first_prime, second_prime, residual first_prime = second_prime print "Sum(S) : %d" % summation