본문 바로가기
프로그래밍/파이썬기초

배수와 공배수 구하기_파이썬 기초

by 조크리 2021. 3. 26.
반응형

파이썬 찐초보 연습!!

 

오늘의 목표

 

1. 어떤 수를 입력받아 배수 구하기

2. 두 수의 배수 찾기

2. 두 수의 최소 공배수 찾기 

 

'최소공배수 最小公倍數'는 LCM이라고도 하는데 Lowest Common Multiple의 약자로 

오늘의 최종 목표라고 할 수 있다! 

 

 

1. 어떤 수의 배수를 구하는 프로그램 만들기

(무제한으로 구할 수 없으니 50개만 구해보자!)

 

1) 첫번째 수를 입력받는다.

2) 배수들을 저장할 곳을 준비한다. 

3) 1부터 50까지 반복한다. : 입력받은 수에 i를 곱한 것을 배수에 둔다.

4) 배수를 출력한다. 

 

number = int(input("어떤 수 : "))
data = []
for i in range(1, 50+1):
  data.append(i * number)

print("%d의 배수는"%(number), data)

 

2. 숫자를 입력받고, 배수의 개수도 입력받아 입력받은 수의 배수를 출력해보자. 

 

1) 첫번째 수를 입력받는다.

2) 두번째 수를 입력받는다.(개수를 입력받음)

3) 1부터 개수까지 반복한다.

4) 배수를 출력한다. 

 

number = int(input("어떤 수 : "))
count = int(input("개수: "))
data = []
for i in range(1, count+1):
  data.append(i * number)

print("%d의 배수는"%(number), data)

 

 

3. 두 수를 입력받고 두 수의 배수를 구하기

 

입력값은 num1, num2, count

출력값은 배수=data1, data2

 

수식

data1 = num1 * i

data2  = num2 * i 

 

number1 = int(input("첫번째 수: "))
number2 = int(input("두번째 수 : "))
count = int(input("개수: "))

data1 = []
data2 = []

for i in range(1, count+1):
  data1.append(i*number1)
  data2.append(i*number2)

print("%d의 배수는" %(number1), data1)
print("%d의 배수는"%(number2), data2)

 

4. 두 수를 입력받고 두 수의 배수를 구하기(3번의 업그레이드 버전)

 

num1은 num2개, num2는 num1개의 배수를 구해보자!

 

number1 = int(input("첫번째 수: "))
number2 = int(input("두번째 수 : "))

data1 = []
data2 = []

for i in range(1, number2+1):
  data1.append(i*number1)
for i in range(1, number1+1):
  data2.append(i*number2)

print("%d의 배수는" %(number1), data1)
print("%d의 배수는"%(number2), data2)

 

5. 두 수의 최소공배수를 구해보자! 

 

입력값 num1, num2

출력값 최소공배수

 

첫번째 입력받은 수 * i 

i는 두번째 입력받은 수이다.

이 값들은 data1이라는 리스트에 저장해둔다.

 

두번째 입력받은 수 * i

i는 첫번째 입력받은 수이다. 

이 값들은 data2라는 리스트에 저장해둔다. 

 

이제 data1 리스트에 있는 값들이 data2에도 있다면 맨 처음 찾은 그 값이 최소공배수가 된다. 

 

코드를 살펴보자! 

number1 = int(input("첫번째 수: "))
number2 = int(input("두번째 수 : "))

data1 = []
data2 = []

for i in range(1, number2+1):
  data1.append(i*number1)
for i in range(1, number1+1):
  data2.append(i*number2)

for i in data1:
  if i in data2:
    lcm = i
    break

print("최소공배수", lcm)

break는 반복문을 종료하는 개념으로 원하는 데이터를 찾은 경우 for반복문을 벗어나게 만든다!

 

while문을 사용해 구해보자!

number1 = int(input("첫번째 수: "))
number2 = int(input("두번째 수 : "))

if number1 > number2:
  greater = number1
else:
  greater = number2
while(1):
  if (greater % number1 == 0) & (greater % number2 == 0):
    lcm = greater
    break
  greater += 1

print("최소공배수 :", lcm)

 

 

6. 공배수 찾기 

 

공배수 찾기는 최소공배수찾기와 비슷하게 코드를 써주면 되는데

cm이라는 리스트를 만들어주고

data1리스트와 data2리스트에서 같은 값을 찾았다면 cm이라는 리스트에 추가해주면된다!

그리고 cm이라는 리스트의 0번째 값이 최소공배수가 된다~!

number1 = int(input("첫번째 수: "))
number2 = int(input("두번째 수 : "))

data1 = []
data2 = []
cm = []

for i in range(1, number2+1):
  data1.append(i*number1)
for i in range(1, number1+1):
  data2.append(i*number2)

for i in data1:
  if i in data2:
    cm.append(i)

print("공배수", cm)
print("최소공배수", cm[0])

 

마지막 미션~!

 

A, B, C의 최소공배수를 구하라! 

 

① A와 B의 최소공배수를 구한다.

② ①에서 구한 A와 B의 최소공배수와 C의 최소공배수를 구한다.

 

number1 = int(input("첫번째 수 : "))
number2 = int(input("두번째 수 : "))
number3 = int(input("세번째 수 : "))

if number1 > number2:
  greater = number1
else:
  greater = number2
while(1):
  if (greater % number1 == 0) & (greater % number2 == 0):
    lcm = greater
    break
  greater += 1

if number3 > lcm:
  greater = number3
else:
  greater = lcm
while(1):
  if (greater % number3 == 0) & (greater % lcm == 0):
    lcm = greater
    break
  greater += 1

print("최소공배수 :", lcm)

 

 

 

반응형