기초수학(1)_약수, 소수, 소인수분해, 공약수/공배수(&유클리드 호제법)

Jio.B·2023년 6월 22일

약수

: 어떤 수를 나누어 떨어지게 하는 수

소수

: 1과 그 수 자신만을 약수로 가지는 수 (단, 1은 소수가 아님)


[ 예제 1 ] 사용자가 입력한 숫자의 약수 출력하기 (with python)

[tip] 약수 = 나머지가 '0'인 숫자

[ 예제 2 ] 사용자가 입력한 숫자까지의 소수 출력하기 (with python)


소인수분해

: 약수(=인수) 중에서 소수인 숫자
: (1보다 큰) 정수를 소인수의 곱으로 나타낸 것

[ex] 20의 소인수는? [ 2, 5 ]
20의 약수 : 1, 2, 4, 5, 10, 20
20의 약수 중 소수에 해당하는 정수 : 2, 5
20의 소인수 = 2, 5
20 = 2 x 10 = 2 x 2 x 5

[ 예제 3 ] 사용자가 입력한 수를 소인수분해 하기 (with python)

[ 예제 4 ] 72에 x를 곱하면 y의 제곱이 된다고 할 때, x에 해당하는 가장 작은 정수 구하기

[tip] '리스트 (in 자료구조)' 활용해서 구하기


최대공약수

  • 공약수 : 두 개 이상의 수에서 공통된 약수
  • 최대공약수 : 공약수 중 가장 큰 수
  • 소인수분해를 이용하면 최대공약수와 공약수를 구할 수 있음

[ 예제 5 ] 두 개의 수(num1, num2)를 입력하면 공약수와 최대공약수를 출력하는 코드 작성하기 (단, num1 < num2 를 전제조건으로 한다.)

  • 유클리드 호제법

[ 예제 6 ] 유클리드 호제법을 이용해서 최대공약수 구하기


최소공배수

  • 공배수 : 두 개 이상의 수에서 공통된 배수
  • 최소공배수 : 공배수 중 가장 작은 수
  • 소인수분해를 이용하면 최소공배수와 공배수를 구할 수 있음

[ 예제 7 ] 두 개의 수를 입력하면 최소공배수를 출력하는 고드 작성하기
(단, num1 < num2 를 전제조건으로 한다.)

[tip] 두 정수 num1, num2의 최소공배수 구하기
1) 최대공약수 maxNum 구하기
2) num1 * num2 // maxNum = 최소공배수

[!! 참고 !!] 세 개의 수(num1, num2, num3)를 입력하면 최소공배수를 출력하는 코드 만들기
1) 두 개의 수(num1, num2)에 대한 최대공약수(maxNum1) 구하기
2) 두 개의 수(num1, num2)에 대한 최소공배수(minNum1) 구하기
3) 세번째 수(num3)와 minNum1의 최대공약수(maxNum2) 구하기
4) maxNum2 * num3 // maxNum2 = 세 개의 수에 대한 최소공배수

[ 예제 8 ] 섬마을에 과일, 생선, 야채를 판매하는 배가 다음 주기로 입항한다고 할 때, 모든 배가 입항하는 날짜를 계산하기
(과일 : 3일 주기, 생선 : 4일 주기, 야채 : 5일 주기 방문)

0개의 댓글