Perl:找出给定数字是否为素数

时间:2015-09-20 03:23:58

标签: perl

我正在尝试编写一个子例程来确定传入的数字是否为素数,并且它无法正常工作。我传入的数字不应该被认定为素数。是否存在逻辑错误,或者我错过了Perl的某些内容?

sub isPrime {

    my ( $n ) = @_;

    for ( my $i = 3 ; $i < $n ; $i++ ) {

        if ( $n % $i == 0 ) {
            return 0;
        }
        else {
            return 1;
        }
    }
}

2 个答案:

答案 0 :(得分:0)

目前你的函数检查n是否不能被3整除,因为它在fisrt测试后立即调用return

尝试在return 0循环中创建函数for,在其外部return 1创建函数,或者为最初为true的数字设置一个标志,并在之后返回其值循环。

您还应该以2开始for循环,而不是3开始,否则您不会测试偶数。

答案 1 :(得分:0)

这是我在大约40分钟内编写的代码。如果效率低下,不要讨厌,我还在学习perl。

print ("This is a prime number checker!\n");
print ("Enter a number below to check it:\n");
$y = 0;
$num = <>;
for ($i = $num; $i > 0; $i--) {
    if ($num % $i == 0) {
        $y += 1;
    }
}
if ($y > 2) {
    print ("$num is not a prime!");
} else {
    print ("$num is a prime!");
}