Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import sys
- import math
- import itertools
- def fermat_prime_and_combi():
- ferm = [1] + [(2**(2**m))+1 for m in range(5)]
- liste = set()
- for i in range(len(ferm)):
- for p in itertools.combinations(ferm,i):
- r = 1
- for elt in p:
- r *= elt
- liste.add(r)
- return liste
- a, b = [int(i) for i in input().split()]
- result = 0
- p2 = 0
- def is_mult_pow_2(n):
- res = (int(n) & int(n-1)) == 0
- return res
- # Write an action using print
- # To debug: print("Debug messages...", file=sys.stderr)
- fermat_p = fermat_prime_and_combi()
- last_traitement = set()
- en_cours = []
- for x in range(b, a-1, -1):
- en_cours = [x]
- while True:
- if x in last_traitement:
- result += 1
- break
- elif is_mult_pow_2(x):
- result += 1
- last_traitement.update(en_cours)
- break
- elif x in fermat_p:
- result += 1
- last_traitement.update(en_cours)
- break
- elif x%2 == 0:
- x = x/2
- en_cours = en_cours + [x]
- else:
- break
- print(result)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement