#!/usr/bin/perl

# 輸入 : 正整數 n
# 輸出 : 小於 n 的質數
sub prime {
    my $n = shift;
    my ($c, $i);

    $c = 1;
    for $i (2..$n) {
        if (is_prime($i)) {
            printf "%d %d\n", $c, $i;
            $c++;
        }
    } 
}

# 輸入 : 正整數 n
# 輸出 : 小於 n 的反質數
sub emirp {
    my $n = shift;
    my ($c, $i, $j);

    $c = 1;
    for $i (2..$n) {
        $j = reverse $i;
        if (is_prime($i) && is_prime($j) && !($i==$j)) {
            printf "%d %d\n", $c, $i;
            $c++;
        }
    }
}

# 輸入 : 正整數 n
# 輸出 : 小於 n 的迴文質數
sub palprime {
    my $n = shift;
    my ($c, $i, $j);

    $c = 1;
    for $i (2..$n) {
        $j = reverse $i;
        if ($i==$j && is_prime($i)) {
            printf "%d %d\n", $c, $i;
            $c++;
        }
    }
}

# 輸入 : 正整數 n
# 輸出 : 小於 n+2 的孿生質數
sub twin_prime {
    my $n = shift;
    my ($c, $i, $j);

    $c = 1;
    for $i (2..$n) {
        if (is_prime($i) && is_prime($i+2)) {
            printf "%d %d %d\n", $c, $i, $i+2;
            $c++;
        }
    }
}

# 輸入 : 正整數 n
# 輸出 : 小於 n 的半質數
sub semiprime {
    my $n = shift;
    my ($c, $i);

    $c = 1;
    for $i (2..$n) {
        if (is_semiprime($i)) {
            printf "%d %d\n", $c, $i;
            $c++;
        }
    }
}



# 判斷質數
# 輸入 : 正整數 n
# 輸出 : 非質數傳回 0, 質數傳回 1
sub is_prime {
    my $n = shift;
    my $i;

    return 0 if ($n

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 搗蛋鬼 的頭像
    搗蛋鬼

    別搗蛋

    搗蛋鬼 發表在 痞客邦 留言(0) 人氣()