Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/perl
- use strict;
- use warnings;
- use feature qw(:5.10);
- use utf8;
- my ($n1, $n2);
- {
- my $line = <STDIN>;
- ($n1, $n2) = split(/\s+/, $line);
- }
- my $gcd = gcd($n1,$n2);
- my @divisor = divisor($gcd);
- my @uniq;
- {
- my %hash;
- $hash{$_}++ for @divisor;
- @uniq = keys %hash;
- }
- say @uniq+1;
- sub divisor {
- my $gcd = shift;
- return if $gcd == 1;
- my $limit = sqrt($gcd);
- for (my $i=2;$i <= $limit;$i++){
- my $remainder = $gcd % $i;
- if ($remainder == 0){
- return $i, divisor($gcd/$i);
- }
- }
- return $gcd;
- }
- sub gcd {
- my @n = sort {$a <=> $b} @_;
- my $remainder = $n[1] % $n[0];
- return $n[0] if $remainder == 0;
- return gcd($n[0], $remainder);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement