[プログラマLv 2]N個の最小公倍数(python)
質問する
https://programmers.co.kr/learn/courses/30/lessons/12953
マイコード
最大公約数、最小公倍数の方法を忘れないでください.覚えておいてください.
最大公約数とは、所定の数字a、bが与えられた場合の、共通の約数のうちの最大値である.最大公約数 を求めます
a,bそれぞれの薬水を求め,共通の薬水から最大値を見つける方法
->探す必要のない薬も探しているので効率が悪い.
ユークリッドアークほう
ユークリッドアーク除去法とは、数字a,bがある場合、aをbの残りとbで割った最大公約数がaとbの最大公約数に等しいことを意味する.
では、aをbで割って、bが0になるまで続け、残りのa値が最大公約数となる.
https://programmers.co.kr/learn/courses/30/lessons/12953
マイコード
"""
1. 아이디어
최소 공배수 구하는 문제인데 식을 몰라서 비효율 적이게 풀 수 있을거 같다.
2. 시간복잡도
O(N^2)
"""
def solution(arr):
for i in range(1, 100000000+1):
for j in arr:
if i % j == 0: # 만약 i의 약수이면 계속 반복문을 돌고
continue
else: # i의 약수가 아니면 break
break
else: # 이 코드는 i의 약수가 아니고 정상적으로 반복문이 종료되면 수행된다.
return i
他人のコード
def gcd(a, b): # 유클리드 호제법
while b > 0:
a, b = b, a % b
return a
def lcm(a, b): # 최소 공배수
return a * b / gcd(a,b)
def solution(arr):
answer = 1
for num in arr:
answer = lcm(num, answer)
return answer
に感銘を与える最大公約数、最小公倍数の方法を忘れないでください.覚えておいてください.
最大公約数とは、所定の数字a、bが与えられた場合の、共通の約数のうちの最大値である.
a,bそれぞれの薬水を求め,共通の薬水から最大値を見つける方法
->探す必要のない薬も探しているので効率が悪い.
ユークリッドアークほう
ユークリッドアーク除去法とは、数字a,bがある場合、aをbの残りとbで割った最大公約数がaとbの最大公約数に等しいことを意味する.
def gcd(a, b):
while b > 0:
a, b = b, a % b
return a
最小公倍数、数字a,bが与えられると、a,bの積をa,bの最大公倍数で除算する.
def lcm(a, b):
return a * b / gcd(a,b)
ただし、mathライブラリを使用して解くことはできます.以下に示します.import math
print(math.gcd(20, 45)) # 5
print(math.lcm(10, 20, 35)) # 140
Reference
この問題について([プログラマLv 2]N個の最小公倍数(python)), 我々は、より多くの情報をここで見つけました https://velog.io/@tyjk8997/프로그래머스-Lv2-N개의-최소공배수pythonテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol