def is_truncatable_prime(num): num_str = str(num) trunc_left = num_str[1:] trunc_right = num_str[:-1] # truncate number from ltr and rtl # if any truncation is not prime, return false while len(trunc_left) > 0: if not is_prime(int(trunc_left)): return False trunc_left = trunc_left[1:] while len(trunc_right) > 0: if not is_prime(int(trunc_right)): return False trunc_right = trunc_right[:-1] return True
def find_number_of_primes(a, b): number_of_primes = 0 inp = 0 while True: if not is_prime(inp * inp + a * inp + b): break inp += 1 number_of_primes += 1 return number_of_primes
def method(): print("find the largest prime factor of 600,851,475,143") inp = 600851475143 for i in range(int(sqrt(inp)), 0, -1): if inp % i == 0 and is_prime(i): print(i) break return
def method(): print("find the 10,001st prime number") prime_counter = 0 i = 1 while prime_counter != 10001: i += 1 if is_prime(i): prime_counter += 1 print(i) return
def is_circular_prime(num_str, orig_num_str, iteration=0): while True: # if the num has been rotated back to the orig number without issue, return true if iteration > 0 and num_str == orig_num_str: return True # get number from string and rotate number num = int(num_str) rotate = num_str[1:] + num_str[0] # if iteration > 0, number has been rotated # check if it is prime # if true, go to next rotation # or if this is the first iteration, we know that this number is already prime, so check next rotation if iteration == 0 or iteration > 0 and is_prime(num): num_str = rotate iteration += 1 continue # here, iteration > 0 and num is not prime, so return false return False