> 백엔드 개발 > 파이썬 튜토리얼 > 유클리드 나눗셈을 기반으로 최대 공약수를 찾는 방법에 대한 Python 예제

유클리드 나눗셈을 기반으로 최대 공약수를 찾는 방법에 대한 Python 예제

不言
풀어 주다: 2018-04-04 16:52:09
원래의
6965명이 탐색했습니다.

이 글에서는 유클리드 나눗셈을 기반으로 한 Python의 최대 공약수 풀이 방법을 주로 소개합니다. 최대 공약수를 풀기 위해 유클리드 나눗셈을 활용한 Python의 구현 방법과 최적화 연산 기술을 예제 형식으로 분석합니다. this article

이 예제에서는 유클리드 나눗셈 방법을 기반으로 최대 공약수를 푸는 Python의 방법을 설명합니다. 참고로 자세한 내용은 다음과 같습니다.

앞서 Knuth TAOCP에서 최대공약수 풀이를 정리한 적이 있습니다. 사실 방과후 문제의 알고리즘 수정에는 최대공약수의 구현이 필요합니다. 유클리드 나눗셈의 공약수.

이 질문에 대한 나의 초기 이해는 틀렸고, 당연히 표준적인 대답도 없었습니다. 이제 표준 답변에 따라 해당 코드 구현을 작성합니다.

# -*- coding:utf-8 -*-
#! python2
def MaxCommpisor(m,n):
  while m * n != 0:
    m = m % n
    if m == 0:
      return n
    else:
      n = n % m
      if n == 0:
        return m
print(MaxCommpisor(55,120))
로그인 후 복사

프로그램 실행 결과:

두 숫자의 위치를 ​​바꾸면 코드는 다음과 같습니다.

# -*- coding:utf-8 -*-
#! python2
def MaxCommpisor(m,n):
  while m * n != 0:
    m = m % n
    if m == 0:
      return n
    else:
      n = n % m
      if n == 0:
        return m
print(MaxCommpisor(120,55))
로그인 후 복사

프로그램 실행 결과:

질문 프롬프트에서 위의 코드로 판단하면 효율성의 손실은 분할과 판단에 있을 것이라고 언급했습니다. 여기에서 이전 알고리즘의 코드를 가져와 비교해 보세요.

def CommDevisor(m,n):
  r = m % n
  while r != 0:
    m = n
    n = r
    r = m % n
  return n
print(CommDevisor(120,25))
로그인 후 복사

실행 결과:

새 알고리즘에는 루프에 추가 분할 및 비교 연산이 있습니다. 실제로 비교 효율성은 여전히 ​​좋지만, 분할 연산으로 인해 효율성이 떨어지게 됩니다.

PS: 추가 참조를 위해 권장되는 여러 계산 도구는 다음과 같습니다.

온라인 일변수 함수(방정식) 해결 계산 도구:
http://tools.jb51.net/ jisuanqi/ equ_jisuanqi

공학용 계산기 온라인 사용_고급 계산기 온라인 계산:
http://tools.jb51.net/jisuanqi/jsqkexue

온라인 계산기_표준 계산기:
http://tools.jb51.net/ jisuanqi/jsq

관련 권장 사항:

php 두 정수의 최대 공약수를 계산하기 위한 공통 알고리즘 요약_PHP 튜토리얼

최대 공약수를 풀기 위해 Python을 사용하는 구현 방법

위 내용은 유클리드 나눗셈을 기반으로 최대 공약수를 찾는 방법에 대한 Python 예제의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿