문제
두 수가 주어질 때 각각의 약수를 튜플로 구성한다. 모든 튜플을 구하라.
풀이
일단 약수를 구하는 함수를 정의한다.
주어진 수 n에 대해 반을 나눈 범위에서 i로 n을 나눴을 때 나머지가 0이라면 리스트에 추가하고
i로 n을 나눈 몫이 i와 다르다면 리스트에 추가한다.
모든 약수가 리스트에 저장되면 정렬하여 return한다.
두 수를 입력받아 각각의 약수를 리스트로 받는다.
중첩 for문으로 약수들의 각각 요소에 접근하여 튜플을 출력한다.
코드
def find_divisors(n):
divisors=[]
for i in range(1, int(n**0.5) + 1):
if n % i == 0:
divisors.append(i)
if i != n//i:
divisors.append(n//i)
return sorted(divisors)
p,q=map(int, input().split())
Ps=find_divisors(p)
Qs=find_divisors(q)
for i in Ps:
for j in Qs:
print(i, j)
'BOJ > Python' 카테고리의 다른 글
[BOJ/백준] 27465 - 소수가 아닌 수 (Python) (1) | 2024.11.08 |
---|---|
[BOJ/백준] 13311 - 행운의 편지 (Python) (0) | 2024.11.08 |
[BOJ/백준] 5704 - 팬그램 (Python) (0) | 2024.11.07 |
[BOJ/백준] 5054 - 주차의 신 (Python) (1) | 2024.11.07 |
[BOJ/백준] 5032 - 탄산 음료 (Python) (0) | 2024.11.07 |