# szereg_harmoniczny($n) oblicza sume pierwszych $n terms n wyrazow
#   szeregu harmonicznego.
#
sub szereg_harmoniczny {
    my ($n) = shift;
    my ($i, $wynik);
    for ($i = 1; $i <= $n; $i++) {
        $wynik += 1/$i;
    }
    return $wynik;
}

# przyblizona_suma($n) oblicza przyblizona sume pierwszych $n wyrazow
#   szeregu harmonicznego.
#
sub przyblizona_suma {
    my ($n) = shift;
    return log($n) +
        0.577215664901532 +
            (1 / (2 * $n)) -
                (1 / (12 * ($n ** 2))) +
                    (1 / (120 * ($n ** 4)));
}

for (1..5) {
    print szereg_harmoniczny($_), "\n";
    print przyblizona_suma($_), "\n";
}

