コード例 #1
0
Problem 35
The number, 197, is called a circular prime because all rotations of the digits: 
197, 971, and 719, are themselves prime.

There are thirteen such primes below 100: 2, 3, 5, 7, 11, 13, 17, 31, 37, 71, 73, 79, and 97.

How many circular primes are there below one million? '''


import Functions
import time

start = time.clock()

circular_ls = [2, 3, 5, 7, 11, 13, 17, 31, 37, 71, 73, 79, 97]
primes_ls = Functions.primes_sieve(999999)
num = ''

for prime in primes_ls:
	if prime > 97:
		num = Functions.int_to_str(prime)				# num is now a char string corresponding to the integer
		num_rot = len(num) -1
		
		while(num_rot > 0):
			num = Functions.rotate(num)
			if Functions.str_to_int(num) not in primes_ls:
				break
			num_rot -=1
		
		if num_rot == 0:
			circular_ls.append(prime)						# if num_rot drops to zero, passed test, append to circular list	
コード例 #2
0
The number 3797 has an interesting property. Being prime itself, it is possible to continuously 
remove digits from left to right, and remain prime at each stage: 3797, 797, 97, and 7. 
Similarly we can work from right to left: 3797, 379, 37, and 3.

Find the sum of the only eleven primes that are both truncatable from left to right and right to left.

NOTE: 2, 3, 5, and 7 are not considered to be truncatable primes. '''

import Functions
import time

start = time.clock()
count = 0
sum = 0

primes_ls = Functions.primes_sieve(1000000)
test_ls = primes_ls[4:]

for prime in test_ls:
	test = str(prime)
	while len(test) > 0:
		test = test[1:]
		if len(test) == 0:
			break
		if int(test) not in primes_ls:
			break
	
	if len(test) == 0:
		test = str(prime)
		while len(test) > 0:
			test = test[0:-1]
コード例 #3
0
n² + an + b, where |a| < 1000 and |b| < 1000

where |n| is the modulus/absolute value of n
e.g. |11| = 11 and |−4| = 4
Find the product of the coefficients, a and b, for the quadratic expression that produces the maximum number 
of primes for consecutive values of n, starting with n = 0. '''

import Functions
import time

def quad_function(n, a, b):
	return n**2 + a*n + b
	
start = time.clock()
primes = Functions.primes_sieve(1002000)
prime_test_ls = Functions.primes_sieve(1000)


n = 0

current_max = 0
current_test = 0
best_a = 0
best_b = 0

for a in range(-999, 1000):
	for b in prime_test_ls:
		while(True):
			if quad_function(n, a, b) in primes:
				current_test += 1