Advertisement
Guest User

Bases in which some 2^x doesn't contain a digit that is 2^x

a guest
Jul 28th, 2016
385
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.43 KB | None | 0 0
  1. digits = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZαβγδεζηθικλμνξοπρστυφχψω"
  2.  
  3. # Search for bases up to b
  4. def powers(b):
  5.     # Bases where some number passed
  6.     bases = []
  7.    
  8.     for base in range(2,b+1):        
  9.         # Did any number in base pass the test?
  10.         pass_in_base = False
  11.            
  12.         for i in range(1025):
  13.             # Get p as a list of powers in base
  14.             p = convert_base(2**i, base)
  15.             powers_of_2 = []
  16.  
  17.             # Get all one-digit powers of 2 up
  18.             j = 0
  19.             while 2**j < base:
  20.                 powers_of_2.append(2**j)
  21.                 j += 1
  22.  
  23.             # Check whether p cointains a power of 2
  24.             p_passes = True
  25.             for power in powers_of_2:
  26.                 if power in p:
  27.                     p_passes = False
  28.                        
  29.             if p_passes:
  30.                 # Remove comment and break to show which numbers passed
  31.                 '''p_str = ""
  32.                for j in p:
  33.                    p_str += digits[j]
  34.                print("In base", base, "the following number passes", p_str)'''
  35.                 pass_in_base = True
  36.                 break
  37.  
  38.         if pass_in_base:
  39.             bases.append(base)
  40.     print(bases)
  41.  
  42.  
  43. def convert_base(n, b):
  44.     if n == 0:
  45.         return [0]
  46.     digits = []
  47.     while n:
  48.         digits.append(int(n % b))
  49.         n //= b
  50.     return digits[::-1]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement