n, p = map(float, input().split()) n = int(n) primes = set(range(2, n + 1)) A = set(range(2, n + 1)) def prf(m): pf = {} for i in range(2, int(m ** 0.5) + 1): while not m % i: pf[i] = pf.get(i, 0) + 1 m //= i if m > 1: pf[m] = 1 return pf for i in range(2, int(n ** 0.5 + 1)): if i not in primes: i += 1 else: ran = range(i * 2, n + 1, i) primes.difference_update(ran) pn = len(list(primes)) B = list(A.difference(primes)) res = pn for b in B: tmp = prf(b) e = [max(0, i - 2) for i in tmp.values()] res += p ** (len(tmp) + sum(e)) print(res)