Friday, March 23, 2007
Perl 펄] 최대 공약수 구하기 함수, 유클리드 호제법; GCD, Euclidean Algorithm
펄로 최대공약수(GCD; Greatest Common Divisor)를 구하는 방법입니다. 펄에는 그런 함수가 내장되어 있지 않기에, 유클리드 호제법(Euclidean Algorithm)이라는 알고리즘으로 함수를 만들었습니다.
스크립트 파일명: example.pl
▶▶ Perl 펄] 최소 공배수 구하기 함수; LCM; Least Common Multiple
최대공약수 함수 예제; Greatest Common Divisor Function
스크립트 파일명: example.pl
#!/usr/bin/perl
use strict; use warnings;
print gcd(12, 18), "\n";
# 6
print gcd(5154, 3435), "\n";
# 3
print gcd(0, 0), "\n";
# 0
# 이 경우는 0으로 정의되어 있음
print gcd(1, 0), "\n";
# 1
# 이것도 맞습니다.
print gcd(0, 12), "\n";
# 12
# 이것도 맞습니다.
print gcd(13, 12), "\n";
# 1
# 공약수가 1밖에 없는 '서로소(Relatively Prime; Coprime)'
print gcd(-42, -56), "\n";
# 14
# 최대공약수는 항상 양수임
# 세 가지 수의 최대공약수 구하기
print gcd(gcd(42, 12), 48), "\n";
# 6
# 최대 공약수 계산 함수
sub gcd {
my $a = $_[0];
my $b = $_[1];
while ($b != 0) {
my $temp = $a % $b;
$a = $b;
$b = $temp;
}
return abs($a);
}
use strict; use warnings;
print gcd(12, 18), "\n";
# 6
print gcd(5154, 3435), "\n";
# 3
print gcd(0, 0), "\n";
# 0
# 이 경우는 0으로 정의되어 있음
print gcd(1, 0), "\n";
# 1
# 이것도 맞습니다.
print gcd(0, 12), "\n";
# 12
# 이것도 맞습니다.
print gcd(13, 12), "\n";
# 1
# 공약수가 1밖에 없는 '서로소(Relatively Prime; Coprime)'
print gcd(-42, -56), "\n";
# 14
# 최대공약수는 항상 양수임
# 세 가지 수의 최대공약수 구하기
print gcd(gcd(42, 12), 48), "\n";
# 6
# 최대 공약수 계산 함수
sub gcd {
my $a = $_[0];
my $b = $_[1];
while ($b != 0) {
my $temp = $a % $b;
$a = $b;
$b = $temp;
}
return abs($a);
}
▶▶ Perl 펄] 최소 공배수 구하기 함수; LCM; Least Common Multiple
tag: perl
Perl | 펄
<< Home