perl - 素数之和总是返回 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);
解决方案
您没有比较正确的字符串。设置值时包含换行符 ( \n
),但比较时不包含。改变:
if (checkPrime($i) eq "prime")
至:
if (checkPrime($i) eq "prime\n")
这是最简单的更改,但您可能根本不需要\n
在其中进行更改。
推荐阅读
- upload - 如何通过 API 将 rdf 文件上传到 GraphDB
- go - os.UserHomeDir() 与 sudo 返回 /root
- ios - iOS MKLocalSearch 导致崩溃
- php - 上周和上个月如何使用 wp_query woocommerce 获得畅销产品
- c++ - 为什么我的两个元组包含字符串,以相同的方式创建,不相等?
- c# - 使用不同的 ItemSource WPF C# 绑定属性
- django - /new_food/(?P6\d+)/ 处的 IntegrityError:NOT NULL 约束失败:food_entry.refer_id
- go - 如何指定 GoFPDF 字体的字体 URL?
- java - 无法使用弹簧批处理读取大文件(8GB)
- html - 如何在 HTML 中呈现对象?