今日は素因数分解

#!/usr/bin/perl -w

use strict;

sub primes{
  my ($n) = @_;
  my @searchList = 2..$n;
  my @primes;
  while(@searchList and $searchList[@searchList-1] > $n**0.5){
	my $prime = shift @searchList;
	push @primes, $prime;
	@searchList = grep{$_ % $prime!=0} @searchList;
  }
  push @primes, @searchList;
  return @primes;
}

my ($n) = @ARGV;

sub prime_decomposition{
  my ($n) = @_;
  my @primes = primes($n);
  my @result;
  for my $p(@primes){
	while($n % $p == 0){
	  $n /= $p;
	  push @result, $p
	}
  }
  return @result;
}

print join(',',prime_decomposition($n)),"\n";

prime-decomposition.plに保存したら
> prime-decomposition.pl 2015
5,13,31
みたいになる。