Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

파이썬에서 sqrt 함수 없이 숫자를 확인하는 프로그램이 완전제곱인지 아닌지

<시간/>

숫자 n이 있다고 가정하면 n이 완전제곱수인지 여부를 확인해야 합니다. 완전제곱수 k는 어떤 정수에 대해 k =a *로 나타낼 수 있습니다. 내장된 제곱근 함수를 사용하지 않고 해결해야 합니다.

따라서 입력이 n =121과 같으면 121 =11*11이므로 출력은 True가 됩니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • n이 0과 같거나 n이 1과 같으면

    • 참을 반환

  • 시작 :=2

  • stop :=n / 2의 바닥

  • 시작하는 동안 <=중지, 수행

    • temp :=처음부터 끝까지 모든 숫자의 목록

    • k :=temp의 중간 요소

    • k_squared :=k * k

    • k_squared가 n과 같으면

      • 참을 반환

    • k_squared> n이면

      • 시작 :=임시[0]

      • 중지 :=k - 1

    • 그렇지 않으면

      • 시작 :=k + 1

      • stop :=temp의 마지막 요소

  • 거짓을 반환

예시

더 나은 이해를 위해 다음 구현을 살펴보겠습니다.

def solve(n):
   if n == 0 or n == 1:
      return True
   start = 2
   stop = n // 2
   while start <= stop:
      temp = range(start, stop + 1)

   k = temp[len(temp) // 2]
   k_squared = k * k 

   if k_squared == n:
      return True

   if k_squared > n:
      start = temp[0]
      stop = k - 1
   else:
      start = k + 1
      stop = temp[-1]

   return False

n = 121
print(solve(n))

입력

121

출력

True