mwultong Blog ... 프로그래밍 / 계산기

컴퓨터 엑셀 워드 포토샵 구글어스 WINDOWS JAVASCRIPT JAVA C++

 
Wednesday, April 11, 2007

Perl 펄] 최소 공배수 구하기 함수; LCM; Least Common Multiple


최소 공배수는, 최대공약수 계산 함수인 gcd()를 내부적으로 호출하여 사용합니다. 수학에서는 최소공배수를 LCM 이라고 부릅니다. Least Common Multiple 의 약자입니다. 단, 아래 소스에서는 소문자로 lcm 이라는 함수명을 지정했습니다.

함수의 사용법은
lcm(숫자, 숫자)
이고, 두 숫자의 최소 공배수를 반환합니다.

최소공배수 계산 예제


스크립트 파일명: example.pl
※ 아래 박스 클릭 후, 키보드 화살표 키로 좌우 스크롤 가능함
#!/usr/bin/perl
use strict; use warnings;


  print lcm(4, 6), "\n";    # 12
  print lcm(21, 6), "\n";   # 42
  print lcm(-5, -4), "\n";  # 20
  print lcm(-9, 2), "\n";   # 18
  print lcm(0, 0), "\n";    # 0

  # 세 숫자의 최소공배수 구하기
  print lcm(45, lcm(120, 75)), "\n";  # 1800

  # 네 숫자의 최소공배수 구하기
  print lcm(112, lcm(113, lcm(114, 119))), "\n";  # 12263664


  # 다음과 같이 거대한 숫자가 나오는 경우,
  # use bigint; 를 사용하면
  # 1.00376006603685e+016 이런 지수 표기법 출력을
  # 10037600660368488 이렇게 정수형으로 나오게 할 수 있음
  use bigint;
  my $x = lcm(51131, lcm(215987, lcm(24, 454452)));
  print $x, "\n"; # 출력 결과: 10037600660368488




# 최소 공배수 계산 함수
sub lcm {
  my $a = $_[0];
  my $b = $_[1];
  my $gcd_value = gcd($a, $b);

  return 0 if $gcd_value == 0; # 인수가 둘다 0일 때의 에러 처리

  return abs( ($a * $b) / $gcd_value );
}


# 최대 공약수 계산 함수; 최소 공배수 계산에 필요함
sub gcd {
  my $a = $_[0];
  my $b = $_[1];

  while ($b != 0) {
    my $temp = $a % $b;
    $a = $b;
    $b = $temp;
  }

  return abs($a);
}



▶▶ Perl 펄] 최대 공약수 구하기 함수, 유클리드 호제법; GCD, Euclidean Algorithm


최소공배수 계산기 (온라인 버전): ▶▶ 최소공배수 계산기; LCM 구하기 Calc




tag: perl
Perl | 펄

0 Comments:

<< Home RSS 2.0 feed

구글 Google 에서 제공하는 무료 블로그 서비스인 블로거 Blogger 의 인터넷 주소는 www.blogger.com 입니다. Blogger 에 블로그를 만들면, blogspot.com 이라는 주소에 블로그가 생성됩니다.
블로그를 직접 방문하지 않고도 최신 게시물을 구독하려면 RSS 2.0 feed 주소를 리더기에 등록하시면 됩니다.
Previous Posts
Monthly Archives
Top