최대공약수

Eunwoo Lee·2022년 7월 17일
0

1.set()키워드를 통한 집합자료형으로 구하기

import  random

def measure(n):
    arg = []
    for i in range(1, n + 1):
        if n % i == 0:
            arg.append(i)
    return arg__

n1 = random.randint(10
0, 1000)
n2 = random.randint(100, 1000)

print(measure(n1))
print(measure(n2))

s1 = set(measure(n1))
s2 = set(measure(n2))

inter = s1 & s2
print(max(inter))
 if max(inter) == 1: print(f'{n1}, {n2} 은 서로소 이다.')_

2.반복문을 통해 구하기

import random

n1 = random.randint(100, 1000)
n2 = random.randint(n1, 1000)
max_n = 0   #max_n 이 최대공약수이다
arg = []
for i in range(1, (n1 + 1)):
    if n1 % i == 0 and n2 % i == 0:
        arg.append(i)
        max_n = i
print(n1, n2)
print(arg)
print(max_n)

3.유클리드 호제법을 통해 구하기

import random

n1 = random.randint(100,1000)
n2 = random.randint(n1 + 1,1000)

tep1 = n1 ; tep2 = n2
while tep2 > 0:
    tep = tep2
    tep2 = tep1 % tep2
    tep1 = tep

print(tep1)

숫자 a, b가 있을 때, a를 b로 나눈 나머지와 b 의최대 공약수 는 a 와 b 의 최대 공약수 가 같다는 것을 의미한다. 그럼, 계속해서 a 를 b로 나누어서 b를 a에 나눈 나머지를 b 에 대입시켜서 b 가 0이 될때 까지 반복을
하면, 남는 a 값이 바로 최대 공약수 이다.

def gcd(a, b):
    while b > 0:
        a, b = b, a % b
    return a

4. math 라이브러리 사용

파이썬 3.9 버전 이후부터 사용가능

import  random
import  math

n1 = random.randint(10, 100)
n2 = random.randint(n1, 100)

print(math.gcd(n1, n2))

0개의 댓글