N如果对于a > 0某些人而言x > 1,我们有一个数字可以用幂形式表达N = a^x.
现在要检查这个,我们可以记录两边的方程式log(n)/log(a)=x,通过迭代从而(2,sqrt(n))如果存在任何数字给出x一个整数而不是那个数字的幂x可以表示为N.
以下是我检查相同的代码
from math import log,sqrt,floor
n=int(input())
t=floor(sqrt(n))+1
flag=False
for i in range(2,t):
x=log(n)/log(i)
if x==int(x):
print("YESSSSSSSSSSSSS!")
flag=True
break
if not flag:
print("Nooooooooooooooooooo!")
Run Code Online (Sandbox Code Playgroud)
时间复杂度:O(n)
有没有其他替代/更好的方法来解决这个问题?
tupledlist=[(71, 146, 110), (71, 146, 98), (71, 146, 99), (71, 146, 109), (71, 146, 26), (71, 146, 99), (71, 146, 109), (71, 146, 26), (71, 146, 91), (71, 146, 26), (71, 146, 110), (71, 146, 95), (71, 146, 109), (71, 146, 110), (71, 146, 26), (71, 146, 103), (71, 146, 95), (71, 146, 109), (71, 146, 109), (71, 146, 91), (71, 146, 97), (71, 146, 95), (71, 146, 26), (71, 146, 91), (71, 146, 104), (71, 146, 94), (71, 146, …