> 백엔드 개발 > 파이썬 튜토리얼 > 숫자가 완전제곱수인지 정확하게 결정하는 방법은 무엇입니까?

숫자가 완전제곱수인지 정확하게 결정하는 방법은 무엇입니까?

Barbara Streisand
풀어 주다: 2024-11-08 19:54:02
원래의
1075명이 탐색했습니다.

How to Accurately Determine if a Number is a Perfect Square?

완전제곱수 찾기: 포괄적인 방법

숫자가 완전제곱수인지 확인하는 것은 간단해 보일 수 있지만 부동 소수점 연산에 의존하는 것은 신뢰할 수 없습니다. 정확성을 위해서는 아래 제시된 것과 같은 정수 기반 접근 방식을 사용하는 것이 중요합니다.

알고리즘은 바빌로니아식 제곱근 계산 방법을 활용합니다. 현재 추정치의 평균과 해당 추정치로 나눈 숫자를 계산하여 반복적으로 제곱근을 추정합니다.

def is_square(apositiveint):
  x = apositiveint // 2
  seen = set([x])
  while x * x != apositiveint:
    x = (x + (apositiveint // x)) // 2
    if x in seen: return False
    seen.add(x)
  return True
로그인 후 복사

이 방법은 양의 정수에 대해 수렴하는 것으로 입증되었으며 숫자가 완벽하지 않으면 중지됩니다. 루프는 무한정 계속됩니다.

다음은 예:

for i in range(110, 130):
   print i, is_square(i)
로그인 후 복사

출력:

110 False
111 False
112 False
113 False
114 False
115 False
116 False
117 False
118 False
119 False
120 True
121 True
122 False
123 False
124 False
125 True
126 False
127 False
128 False
129 True
로그인 후 복사

위에서 볼 수 있듯이 알고리즘은 111 및 122와 같은 불완전한 정사각형을 제외하면서 120 및 125와 같은 완전 정사각형을 올바르게 식별합니다.

큰 정수의 경우 부동 소수점 부정확성이 커져 잠재적으로 다음과 같은 문제가 발생할 수 있습니다. 잘못된 결과. 정확성을 보장하려면 이 작업에 부동 소수점 연산을 사용하지 않는 것이 좋습니다.

위 내용은 숫자가 완전제곱수인지 정확하게 결정하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿