파이썬 약수 구하기는 코딩 테스트에서 간간히 나오는 단골문제이면서, 여러가지 다른 요소에서 많이 쓰이는 파이썬 나머지 기호를 활용한 대표적인 문제입니다. 보통 나머지를 구하는 식을 배우고 난 뒤 이 약수 구하기는 빼먹지 않고 연습 문제로 나오는 편인데요! 비단, 파이썬 뿐만 아니라 다른 언어를 공부하실 때도 나오는 문제이니 기본적으로 확인하고 가시면 좋겠습니다.
혹시나 약수에 대해 조금 까먹으셨거나, 기억이 잘 안나시는 분들을 위해 스크린샷 한 컷 준비했습니다. 어떠한 수로 나누었을 때 나누어떨어지는 경우(나머지가 없는 경우) 그 수가 나눈 수의 약수라고 합니다. 그래서 위에 나눗셈 식에서도 8을 1,2,4,8 로 나누었을 때 각각 나누어 떨어지는 것을 확인할 수 있습니다. 즉, 1,2,4,8이 8의 약수라고 할 수 있습니다.
그렇다면 우리는 중요한 조건을 찾을 수 있는데요 ! 약수를 찾는 코딩을 하기 위해서는 나머지가 0이 되어야한다는 점입니다. 이 조건을 if 문 안에 적고 나머지가 0이면 출력하거나 숫자를 세어주고, 조건에 만족하지 않는다면 그대로 지나가게 하는 방식으로 한번 작성해보겠습니다.
! 코딩 하기 전에 코드 안에 들어가야하는 약수 기본 조건 !
1. 나누었을 때 나머지 값이 == 0 이 되는 것을 조건문 안에 넣어야한다.
2. 조건을 만족 못했을 때 그냥 출력 x
3. 약수는 최대 자기 자신 밖에 안 되므로, 반복문에서 자기 자신 값 이하로 조건을 잡는다.
1. 약수 구하기 기초적인 틀 ( 8을 기준으로)
위에서 작성했던 것을 토대로 코드를 작성하고, 추가적으로 약수의 조건에서 부족한 부분이 있었다면 채워넣으시면 됩니다.
작성 코드 공유
# 1. 약수 구하기 기초적인 틀
number = 8
index = 1
while index <= number :
if number % index == 0: #나머지가 0이라면 나머지를 출력하게 만들기.
print(index)
index += 1 #만약에 나머지가 0이 아니라면 index를 추가해서 반복문이 돌게 만들기
일단 완전히 기초적인 틀로 약수를 구하는 방법을 출력해봤습니다.
다른 요소들은 제쳐두고, 우선 이 기초적인 시작 부분을 중심으로 코딩을 한번 해보셨으면 좋겠습니다. 그리고 이렇게 기본적인 틀이 끝났다면 이제 다른 요소들을 추가해볼 수 있습니다. 약수의 갯수를 확인해볼 수도 있고 입력 값을 우리가 직접 입력할 수도 있습니다.
2. 약수의 갯수 구하기 ( 80을 기준으로)
위의 조건에서 약수의 갯수를 세어주고 또 그 값을 추가해서 반복문 조건을 추가해주어야 합니다. 그러기 위해서는, 이제 빈 공간을 하나 만들어 주어야하는데요, 약수를 하나씩 저장해주는 것이 아니라 변수 하나를 지정해주고 약수가 나왔을 때 하나씩 올려가는 방법으로 진행하고자 했습니다.
작성 코드 공유
# 2. 약수의 갯수를 확인하려면?
number = 80
index = 1
count = 0
while index <= number :
if number % index == 0: #나머지가 0이라면 나머지를 출력하게 만들기.
print(index)
count += 1 #약수가 지나가면 약수를 세는 count 값을 추가.
index += 1 #만약에 나머지가 0이 아니라면 index를 추가해서 반복문이 돌게 만들기
print(f"{number}의 약수 : {count}개.")
여기서는 count를 통해 하나씩 추가해줬고 마지막에서는 f-string을 통해 출력 값을 우리가 정한 파라미터를 넣어주어 출력했습니다. 그냥 띡 하고 약수의 총 갯수를 출력해주는 것보다 print 문에 그 값을 문장으로 출력하는 것이 더 보기 편할 것 같아서 이렇게 출력해봤습니다.
3. 입력 받은 값을 토대로 약수의 갯수 구하기 (input)
이번엔 우리가 앞서 지정한 조건들에 더해서 input을 통해서 미리 지정하는 것이 아닌, 입력받아서 그 입력 값의 약수를 구하는 코드를 추가해보겠습니다. 추가로 사용되는 코드 문법은 파이썬 input 입니다.
# 3. input을 통해서 약수 구하고 싶은 수를 지정해준다면?
number = int(input("약수를 구하고 싶은 수는? : "))#수를 미리 지정하는 것이 아니라, 입력받게 해주는 코드
index = 1
count = 0
while index <= number :
if number % index == 0: #나머지가 0이라면 나머지를 출력하게 만들기.
print(index)
count += 1 #약수가 지나가면 약수를 세는 count 값을 추가.
index += 1 #만약에 나머지가 0이 아니라면 index를 추가해서 반복문이 돌게 만들기
print(f"{number}의 약수 : {count}개.")
저의 아주 작은 티끌 코딩 글이 블로그 방문자 님의 코딩에 조금이라도,
도움이 됐으면 좋겠습니다. 감사합니다 : )
'Programming Language > Python( 파이썬 )' 카테고리의 다른 글
파이썬(Python) for문 구조와 for in range 활용 예시를 통해 파악해보겠습니다. (0) | 2021.06.26 |
---|---|
파이썬(Python) 리스트 거꾸로 뒤집기 (reverse/ reversed/ for 반복문 이용) (0) | 2021.06.20 |
파이썬 format, f-string (여러가지 포맷팅 방법에 대한 예시) (0) | 2021.06.11 |
파이썬 int, float, str에 대한 이해와 형변환.( 숫자형 / 문자형) (0) | 2021.06.10 |
파이썬 기본 연산 [ 버림, 몫 구하기, 나머지, 제곱 , 파이썬 %, 파이썬 //] (0) | 2021.06.10 |