Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from fnmatch import fnmatch
- def divisors(x):
- dels = set()
- for i in range(1, int(x ** 0.5) + 1):
- if x % i == 0:
- dels.add(x // i)
- dels.add(i)
- return dels
- def is_prime(x):
- return len(divisors(x)) == 2
- prime_numbers = [i for i in range(10 ** 5) if is_prime(i)]
- def closest_prime(n):
- dist = {}
- min_dist = float('+inf')
- for prime in prime_numbers:
- current_dist = abs(n - prime)
- dist[prime] = current_dist
- min_dist = min(min_dist, current_dist)
- for k, v in dist.items():
- if v == min_dist:
- return k
- count = 0
- output = []
- for i in range(10 ** 5, 1, -1):
- if str(i) == str(i)[::-1] and (
- fnmatch(str(i), '[2468][02468][02468][02468]*?') or fnmatch(str(i), '[2468][02468][02468]*?') or fnmatch(
- str(i), '[2468][02468]*?') or fnmatch(str(i), '[2468]*?')):
- output.append(f'{i} {closest_prime(i)}')
- count += 1
- if count == 5: break
- for i in output[::-1]:
- print(i)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement