問題:https://atcoder.jp/contests/abc097/tasks/abc097_b
2重のfor文で全探索して条件を満たすものを見つければOKです。
コード例
X=int(input())
ans=0
for i in range(1,X+1):
for j in range(2,11):
tmp=i**j
if ans<tmp<=X:
ans=tmp
print(ans)
べき乗の数をいくつまで調べるかですが、この問題のXは最大が1000で、2^10が1024ですから最大10まで調べれば良いとわかります。