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

공약수, 최대공약수, 서로소 찾기_파이썬 기초

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

파이썬 찐초보!

 

오늘의 목표

 

1. 5의 배수를 구해보자. (2의배수, 4의배수도 가능!)

2. 공약수를 구해보자!

3. 최대 공약수를 구해보자

4. 서로소를 구해보자. 

 

 

1. 배수 구하기

1부터 입력한 수 사이의 5의 배수를 찾는 프로그램을 만들어보자! 

 

입력값 : 숫자(num)

출력값 : 배수 (data 리스트의 값)

수식 = num % i == 0, data = i

 

1) 어떤 수를 입력하시오를 출력한다.

2) 출력할 5의 배수를 저장할 곳을 준비한다.(리스트 준비)

3) 1이 5의 배수인지 판별하고 - 5의 배수이면 저장한다. 

4) 1부터 입력한 수까지 반복한다. 

5) 5의 배수를 화면에 출력한다. 

 

num = int(input("숫자를 입력하세요 : "))
data = []

for i in range(1, num + 1):
  if i % 5 == 0:
    data.append(i)
  
print("1부터 %d까지의 숫자 중 5의 배수는"%(num), data)

 

2. 논리 연산자 

 

출처 :https://m.blog.naver.com/heartflow89/221053732991

 

 

3. 연산자 우선순위

 

출처  : https://drin.tistory.com/entry/%ED%8C%8C%EC%9D%B4%EC%8D%AC-%EB%B0%B0%EC%9A%B0%EA%B8%B0-%EC%97%B0%EC%82%B0%EC%9E%90-%EC%9A%B0%EC%84%A0%EC%88%9C%EC%9C%84

 

4. 두 수의 공약수 구하는 프로그램

 

이번에는 두 수를 입력받고 두 수의 공약수를 출력하는 프로그램을 만들어보자!

(단, 첫 번째 입력받은 수 < 두 번째 입력받은 수)

 

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

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

3) 출력할 공약수를 저장할 곳을 준비한다.(리스트)

4) 두 수가 1로 나누어지는지 판별 : 동시에 나누어지면 공약수

5) 두 수가 2로 나누어지는지 판별 : 동시에 나누어지면 공약수

6) 두수가 한 수 까지 나누어지는지 반복한다. 

7) 공약수를 화면에 출력한다. 

 

num1 = int(input("첫번째 수를 입력하세요 : "))
num2 = int(input("두번째 수를 입력하세요 : "))
data = []

for i in range(1, num1 + 1):
  if (num1 % i == 0) & (num2 % i == 0):
    data.append(i)
  
print("%d와 %d의 공약수는"%(num1, num2), data)

 

 

5. 두 수의 최대공약수 구하는 프로그램

 

입력값 : num1, num2

출력값 : 최대공약수 max

수식 만들기 : num1 % i == 0 & num2 % i == 0, max = i

 

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

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

3) 출력할 공약수를 저장할 곳을 준비한다.(리스트)

4) 두 수가 1로 나누어지는지 판별 : 동시에 나누어지면 공약수

5) 두 수가 2로 나누어지는지 판별 : 동시에 나누어지면 공약수

6) 두수가 한 수 까지 나누어지는지 반복한다. : 최대공약수 < 현재까지

7) 최대공약수를 화면에 출력한다. 

 

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

for i in range(1, num1 + 1):
  if (num1 % i == 0) & (num2 % i == 0):
    gcd = i 
  
print("%d와 %d의 최대공약수는 %d"%(num1, num2, gcd))

 

그럼 두 수의 최대 공약수와 공약수를 구해보자

num1 = int(input("첫번째 수를 입력하세요 : "))
num2 = int(input("두번째 수를 입력하세요 : "))
data = []

for i in range(1, num1 + 1):
  if (num1 % i == 0) & (num2 % i == 0):
    data.append(i)
    gcd = i 
  
print("%d와 %d의 최대공약수는 %d"%(num1, num2, gcd))
print("두 수의 공약수는", data)

 

 

6. 두 수의 서로소 판별 프로그램 만들기

 

서로소는 두 수의 공약수가 1뿐인 두 수를 말한다!

 

입력값 : 숫자 num1, num2

출력값 : 서로수이다, 아니다

수식 : 두 수의 최대공약수가 1이다!

 

num1 = int(input("첫번째 수를 입력하세요 : "))
num2 = int(input("두번째 수를 입력하세요 : "))
data = []

for i in range(1, num1 + 1):
  if (num1 % i == 0) & (num2 % i == 0):
    data.append(i)
    gcd = i

if gcd == 1:
  print("두 수는 서로소입니다.")
else:
  print("두 수는 서로소가 아니군요.")

 

 

 

오늘의 목표

 

1. 5의 배수를 구해보자. (2의배수, 4의배수도 가능!)

2. 공약수를 구해보자!

3. 최대 공약수를 구해보자

4. 서로소를 구해보자. 

 

연습 끝~! 

 

마지막 미션! 

 

A, B, C의 최대공약수를 구해라! 

 

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

for i in range(1, num1 + 1):
  if (num1 % i == 0) & (num2 % i == 0):
    gcd = i 

if num3 > gcd:
  greater = num3
  smaller = gcd
else:
  greater = gcd
  smaller = num3

for i in range(1, greater + 1):
  if (greater % i == 0) & (smaller % i == 0):
    gcd = i
  
print("최대공약수는 %d"%(gcd))

 

다음글에서는 배수와 최소공배수를 구하는 방법을 정리해보려한다~!

 

 

 

반응형