코딩 연습

(파이썬) 완전제곱수 판별 본문

Python

(파이썬) 완전제곱수 판별

코딩아저씨 2016. 3. 15. 16:17
반응형

 

처음으로 파이썬에서 완전제곱수를 판별하는 함수를 만들려고 단순히 제곱근이 정수이면 된다고 생각해었다. 그래서 다음과 같은 함수를 만들었었다.

 

def issquare(n):
	temp = n ** 0.5
	if int(temp) == temp:
		return True
	else:
		return False

 

그런데 이게 제대로 작동을 안하는 것이었다.

 \(89011483755109777\) 은 완전제곱수가 아닌데도 제곱근이 정수로 출력되는 것을 볼 수 있다. 소숫점 이하가 아주 작을 경우 버림을 해버리기 때문에 발생하는 일이다. 따라서 이것만으로는 완전제곱수인지 판단하기 어려우므로, 제곱근을 다시 제곱해서 원래의 수가 나오는지 확인해야 한다. 

 

def issquare(n):
	temp = n ** 0.5
	if int(temp) == temp:
		if temp ** 2 == n:
			return True
	return False

 

이렇게 하면 제대로된 결과를 얻을 수 있다. 그럼에도 불구하고 뭔가 깔끔해 보이지 않는다. 그래서 정리한 함수는 다음과 같다. 

 

def issquare(n):
	return int(n ** 0.5) ** 2 == n

 

깔끔해 보인다.

 

 

 

 

반응형

'Python' 카테고리의 다른 글

(파이썬) 분수의 표현과 그 연산  (0) 2016.03.15
(파이썬) 최대공약수 구하기  (0) 2016.03.15
(파이썬) 소수판정  (0) 2016.03.15
(파이썬) 소인수 분해  (0) 2016.03.15
(파이썬) 모든 조합의 경우 나열하기  (0) 2016.03.15


Comments