#!/usr/bin/perl

# $nww = nww( @liczby ) oblicza najmniejsza wspolna wielokrotnosc dla @liczby.
#
sub nww {
    use integer;
    my $nww = shift;
    foreach (@_) { $nww *= $_ / nwd($_, $nww) }
    return $nww;
}

print nww(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), "\n";

sub nwd {
    use integer;
    my $nwd = shift || 1;
    while (@_) {
        my $kolejny = shift;
        # ($nwd, $kolejny) = ($kolejny, $nwd % $kolejny) while $kolejny;
        while( $kolejny ) {
            my $r = $nwd % $kolejny;
            $r += $kolejny if $r < 0;   # poprawka dla % w trybie integer 
            $nwd = $kolejny;
            $kolejny = $r;
        }
    }
    return $nwd;
}
