1以上N以下の整数のうち、abと表せないものがいくつあるか答える問題です。
提出
n = int(input())
s = set()
a = 2
while a**2 <= n:
b = 2
while a**b <= n:
s.add(a**b)
b += 1
a += 1
print(n-len(s))
abと表せるものの数を数えて、Nから引いて求めるという方法を使います。
重複を避けるために、set型のオブジェクトを生成します。
while文を用いて、N以下のabを全探索していきます。
N以下のabをすべて「s」に加えていき、最後にlen() で要素数を求めてnから引いたものを出力します。