0
Hello everyone there's is one question we have to give input a number than we have to check whether it's a square cube of any no
from math import log def prime(a): return all(False if a%i==0 else True for i in range(2,(a//2)+1)) def equivalent_power(a): if prime(a): return 'NO' else: for i in range(2,(a//2)): n=log(a,i) if i**int(n)==a: return 'YES' else: continue return 'NO' if __name__=='__main__': print(equivalent_power(int(input()))) If I'm giving input 1000 why it giving me Answer No
9 ответов
0
squire Or cube?
what is your idea of n= log(a, I)?
0
# cube:
n = int(input('~>'))
m = n**(1/3)
if m==int(m):
print('Yes')
else:
print('No')
# your way may take a longer time as involves calls of functions, but I wonder about generators ...
0
Ervis Meta - SoloHelper why it giving no on thousand?
0
Jayakrishna🇮🇳 bro actually it taking log value i gave you one example suppose you give input 1000 okay now log (1000,2) it means log base 2( 1000) is 9.6 than it will check if it's is equal to input or not like- 2**9.6==1000 and keep incremented when the value of log.
How can i send photo here you can understand with photo it's hard to explain in text.
0
Akash Gupta that is because of the way Python interpret floats, for 1000 it will give 9.99...8 and ~9.9!=10 so it won't print 'Yes'.
0
Ervis Meta - SoloHelper please check your code once having another error also it will giving no on 64,216 ??
And i can't understand your logic behind giving float value on 1000 ?
0
Akash Gupta then instead of n= log(a, I), use its ceil value like
n=ceil(log(a,i))
0
Jayakrishna🇮🇳 bro can you do that it giving error while doing this
0
Akash Gupta
from math import log, ceil
def prime(a):
return all(False if a%i==0 else True for i in range(2,(a//2)+1))
def equivalent_power(a):
if prime(a):
return 'NO'
else:
for i in range(2,(a//2)):
n=ceil(log(a,i)) #take roundup value
if i**int(n)==a:
return 'YES'
else:
continue
return 'NO'
if __name__=='__main__':
print(equivalent_power(int(input())))