파이썬으로 공배수 / 공약수 판별

파이썬으로 공배수와 공약수 판별하기

프로그래밍을 처음 배우는 분들에게, 숫자 간의 관계를 이해하는 것은 매우 흥미로운 주제입니다. 특히 공배수와 공약수는 수학적 개념이지만, 프로그래밍을 통해 이를 간단히 판별할 수 있습니다. 이번 글에서는 파이썬을 사용하여 세 개의 정수를 입력 받아 공배수와 공약수를 판별하는 방법을 알아보겠습니다.

공배수와 공약수란 무엇인가?

공배수는 두 개 이상의 숫자가 동시에 나누어 떨어지는 수입니다. 예를 들어, 6과 8의 공배수는 24가 될 수 있습니다. 반대로 공약수는 두 숫자가 공통으로 가지는 약수를 말합니다. 예를 들어, 12와 16의 공약수는 4입니다. 이러한 개념들은 수학적 연산에서 자주 사용되며, 프로그래밍을 통해서도 쉽게 구현할 수 있습니다.

초급 예제 ①: 두 수의 공배수 판별

먼저 두 개의 숫자가 주어졌을 때, 하나가 다른 하나의 배수인지 확인하는 간단한 프로그램을 작성해보겠습니다.

num1 = 10
num2 = 5

if num1 % num2 == 0:
print(f"{num1}은 {num2}의 배수입니다.")
else:
print(f"{num1}은 {num2}의 배수가 아닙니다.")

여기서는 num1num2라는 두 변수를 선언하고, if 조건문을 사용하여 num1num2로 나누어 떨어지는지 확인합니다. % 연산자는 나머지를 구하는 연산자로, 나머지가 0이면 배수임을 나타냅니다.

초급 예제 ②: 세 개의 숫자 공배수 판별

이제 세 번째 숫자가 다른 두 숫자의 공배수인지 확인하는 프로그램을 확장해보겠습니다.

num1 = 3
num2 = 4
num3 = 12

if num3 % num1 == 0 and num3 % num2 == 0:
print(f"{num3}는 {num1}과 {num2}의 공배수입니다.")
else:
print(f"{num3}는 {num1}과 {num2}의 공배수가 아닙니다.")

여기서는 and 연산자를 사용하여 num3num1num2의 공배수인지 확인합니다. 두 조건이 모두 참일 때에만 공배수라는 결과가 출력됩니다.

중급 단계: 사용자 입력을 통한 공배수 판별

사용자 입력을 받아 다이내믹하게 공배수와 공약수를 판별할 수 있는 프로그램을 작성해보겠습니다.

num1 = int(input("첫 번째 숫자를 입력하세요: "))
num2 = int(input("두 번째 숫자를 입력하세요: "))
num3 = int(input("세 번째 숫자를 입력하세요: "))

if num3 % num1 == 0 and num3 % num2 == 0:
print(f"{num3}는 {num1}과 {num2}의 공배수입니다.")
else:
print(f"{num3}는 {num1}과 {num2}의 공배수가 아닙니다.")

이 프로그램은 사용자로부터 세 개의 정수를 입력받은 뒤, 같은 논리로 공배수를 판별합니다. input() 함수는 사용자 입력을 문자열로 받고, int() 함수를 사용하여 이를 정수로 변환합니다.

상급 단계: 함수와 클래스 사용

이제 함수와 클래스를 사용하여 코드를 구조화하고, 재사용성을 높여보겠습니다.

상급 예제 ①: 함수 도입

함수를 사용하여 공배수 판별 기능을 모듈화합니다.

def is_common_multiple(a, b, c):
return c % a == 0 and c % b == 0

result = is_common_multiple(3, 4, 12)
if result:
print("12는 3과 4의 공배수입니다.")
else:
print("12는 3과 4의 공배수가 아닙니다.")

이 함수는 a, b, c를 매개변수로 받아 cab의 공배수인지 여부를 반환합니다. 함수의 사용으로 가독성과 재사용성이 향상됩니다.

상급 예제 ②: 공배수와 공약수를 함께 판별하는 클래스

클래스를 사용하여 공배수와 공약수 판별 기능을 확장합니다.

class NumberRelations:
def __init__(self, a, b, c):
self.a = a
self.b = b
self.c = c

def is_common_multiple(self):
return self.c % self.a == 0 and self.c % self.b == 0

def is_common_divisor(self):
return self.a % self.c == 0 and self.b % self.c == 0

numbers = NumberRelations(3, 4, 12)

if numbers.is_common_multiple():
print("12는 3과 4의 공배수입니다.")
else:
print("12는 3과 4의 공배수가 아닙니다.")

if numbers.is_common_divisor():
print("3과 4는 12의 공약수입니다.")
else:
print("3과 4는 12의 공약수가 아닙니다.")

클래스 NumberRelations는 세 개의 숫자를 받아 공배수와 공약수를 각각 판별하는 메소드를 제공합니다. 객체 지향 프로그래밍의 장점으로, 데이터와 기능을 하나의 클래스에 캡슐화하여 관리할 수 있습니다.

요약

파이썬을 사용한 공배수와 공약수 판별 프로그램을 단계별로 구현해 보았습니다. 기초적인 변수와 조건문을 시작으로, 함수와 클래스까지 활용하여 프로그램의 효율성을 높였습니다. 이러한 연습은 실무에서도 유용하게 쓰일 수 있습니다.

#파이썬 #공배수 #공약수 #코딩 #프로그래밍 #초보자 #변수 #조건문 #반복문 #파이썬기초