首页 > 解决方案 > 素数之和总是返回 0

问题描述

我在 Perl 中有一个代码,它接受一个数字并将所有素数相加到该数字。我不断得到值 0,这意味着它没有更新我的$sum变量,但我不知道还能做什么。

sub checkPrime {
    my($numb) = @_;
    $primeCheck = "prime\n";
     if ($numb == 1) {
        $primeCheck = "notPrime\n";
     }
     
     for ($i = 2; $i < $numb; $i++) {
        $mod = $numb % $i;
        if ($mod == 0) {
            $primeCheck = "notPrime\n"
        }
     }
     return $primeCheck;
}

sub sumOfPrimes {
    my($input) = @_;
    $sum = 0;
    
    for ($i = 2; $i <= $input; $i++) {
        if (checkPrime($i) eq "prime") {
            $sum = $sum + $i;
        }
    }
    return $sum;
}
print sumOfPrimes(10);

标签: perl

解决方案


您没有比较正确的字符串。设置值时包含换行符 ( \n),但比较时不包含。改变:

    if (checkPrime($i) eq "prime")

至:

    if (checkPrime($i) eq "prime\n")

这是最简单的更改,但您可能根本不需要\n在其中进行更改。


推荐阅读