import math def floor_log(num, base): if num < 0: raise ValueError("Non-negative number only.") if num == 0: return 0 return base ** int(math.log(num, base)) def floor_logx(num, base): if num < 0: raise ValueError("Non-negative number only.") if num == 0: return 0 exponent = 0 while num >= base: num = int (num / base) exponent += 1 return base ** exponent for x in range(0, 100): print("X {0} gives {1} and {2}".format(x, floor_log(x, 2), floor_logx(x, 2)))
Standard input is empty
X 0 gives 0 and 0 X 1 gives 1 and 1 X 2 gives 2 and 2 X 3 gives 2 and 2 X 4 gives 4 and 4 X 5 gives 4 and 4 X 6 gives 4 and 4 X 7 gives 4 and 4 X 8 gives 8 and 8 X 9 gives 8 and 8 X 10 gives 8 and 8 X 11 gives 8 and 8 X 12 gives 8 and 8 X 13 gives 8 and 8 X 14 gives 8 and 8 X 15 gives 8 and 8 X 16 gives 16 and 16 X 17 gives 16 and 16 X 18 gives 16 and 16 X 19 gives 16 and 16 X 20 gives 16 and 16 X 21 gives 16 and 16 X 22 gives 16 and 16 X 23 gives 16 and 16 X 24 gives 16 and 16 X 25 gives 16 and 16 X 26 gives 16 and 16 X 27 gives 16 and 16 X 28 gives 16 and 16 X 29 gives 16 and 16 X 30 gives 16 and 16 X 31 gives 16 and 16 X 32 gives 32 and 32 X 33 gives 32 and 32 X 34 gives 32 and 32 X 35 gives 32 and 32 X 36 gives 32 and 32 X 37 gives 32 and 32 X 38 gives 32 and 32 X 39 gives 32 and 32 X 40 gives 32 and 32 X 41 gives 32 and 32 X 42 gives 32 and 32 X 43 gives 32 and 32 X 44 gives 32 and 32 X 45 gives 32 and 32 X 46 gives 32 and 32 X 47 gives 32 and 32 X 48 gives 32 and 32 X 49 gives 32 and 32 X 50 gives 32 and 32 X 51 gives 32 and 32 X 52 gives 32 and 32 X 53 gives 32 and 32 X 54 gives 32 and 32 X 55 gives 32 and 32 X 56 gives 32 and 32 X 57 gives 32 and 32 X 58 gives 32 and 32 X 59 gives 32 and 32 X 60 gives 32 and 32 X 61 gives 32 and 32 X 62 gives 32 and 32 X 63 gives 32 and 32 X 64 gives 64 and 64 X 65 gives 64 and 64 X 66 gives 64 and 64 X 67 gives 64 and 64 X 68 gives 64 and 64 X 69 gives 64 and 64 X 70 gives 64 and 64 X 71 gives 64 and 64 X 72 gives 64 and 64 X 73 gives 64 and 64 X 74 gives 64 and 64 X 75 gives 64 and 64 X 76 gives 64 and 64 X 77 gives 64 and 64 X 78 gives 64 and 64 X 79 gives 64 and 64 X 80 gives 64 and 64 X 81 gives 64 and 64 X 82 gives 64 and 64 X 83 gives 64 and 64 X 84 gives 64 and 64 X 85 gives 64 and 64 X 86 gives 64 and 64 X 87 gives 64 and 64 X 88 gives 64 and 64 X 89 gives 64 and 64 X 90 gives 64 and 64 X 91 gives 64 and 64 X 92 gives 64 and 64 X 93 gives 64 and 64 X 94 gives 64 and 64 X 95 gives 64 and 64 X 96 gives 64 and 64 X 97 gives 64 and 64 X 98 gives 64 and 64 X 99 gives 64 and 64