gpt4 book ai didi

Ruby - 编写识别素数的方法

转载 作者:数据小太阳 更新时间:2023-10-29 08:56:37 27 4
gpt4 key购买 nike

如果整数是质数,下面的方法应该返回 true,如果不是,则返回 false。有人可以向我解释 true 的位置是如何正确的吗?我很难理解每个闭包 (end) 是如何关闭每个 block 的,以及为什么将 true 放在它所在的位置是正确的。

这是我正在为类(class)完成的实验。我知道代码有效,但不确定原因。

def prime?(value)
if value <= 1 || value == 0 || value == 1
return false
elsif
(2..value - 1).each do |i|
if value % i == 0
return false
end
end
end
true # <= need explanation
end

prime? 应为素数返回 true,为非素数返回 false

最佳答案

我重新格式化了这段代码,使 end 闭包缩进良好:

def prime?(value)
if value <= 1 || value == 0 || value == 1
return false
elsif
(2..value - 1).each do |i|
if value % i == 0
return false
end
end
end
true # <= need explanation
end

我想您已经熟悉了 if 部分,但对 elsif 和结尾的 ture 感到很吃力。

如果没有明确的return,Ruby 方法将返回其最后一个表达式的值。这样最后的 true 将返回 当且仅当 我们错过了 if 分支并通过了 elsif没有激活的分支 return false

什么时候会发生?如果value是素数,当然会先落入elsif分支,然后检查每一个小于它的数,看是否能被它们整除。

一旦所有试验都失败,elsif分支结束,我们会遇到最后一个true表达式。

关于Ruby - 编写识别素数的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53878004/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com