MAX_NUM = 1000000 def is_prime(n): """Returns True if n is prime.""" if n == 1: return False if n == 2: return True if n == 3: return True if n % 2 == 0: return False if n % 3 == 0: return False i = 5 w = 2 while i * i <= n: if n % i == 0: return False i += w w = 6 - w return True if __name__ == '__main__': results = [] for i in range(MAX_NUM): if not is_prime(i): continue j = str(i) if len(j) == 1: if is_prime(i): results.append(i) continue if len(j) == 2: if is_prime(i) and is_prime(int(j[1] + j[0])): results.append(i) continue for rotation in range(len(j)): prime = True j = j[1] + j[2:] + j[0] if not is_prime(int(j)): prime = False break if prime is True: results.append(i) print(results) print(len(results))