숫자 N
은 일부 a > 0
및 일부 x > 1
에 대해 N = a^x
인 경우 전원 형식으로 표현 될 수 있다고합니다. 지금 정수로 표현 된 정수형
N
같이 표현 될 수있는 전력
x
에 그 숫자보다 정수
x
제공 개수가 존재하는 경우
(2,sqrt(n))
에서 반복하여 그렇게
log(n)/log(a)=x
된다.
다음은 같은
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!")
시간 복잡도를 확인하는 내 코드입니다 : O (N)
문제에 대한 다른 대안/더 나은 방법이 있습니까?
이x <- 0
i <- 2
found <- false
do
x <- root(N, i)
if (x is integer) then
found <- true
end if
i <- i + 1
while (x >= 2) and (not found)
이 알고리즘은 선형보다 훨씬 빠를 것이다 :
이것은 수학 또는 프로그래밍 질문입니까? –
프로그래밍에 사용하려고하지만 수학 문제로 취급 될 수 있습니다. – Demonking28
죄송합니다. 그렇지만 수학 관련 형제 사이트 중 하나에 질문을 올리는 것이 좋습니다. –