#!/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
全站熱搜