gpt4 book ai didi

ruby - Prime#prime_division 中的 while 语句如何工作?

转载 作者:太空宇宙 更新时间:2023-11-03 16:28:04 25 4
gpt4 key购买 nike

我正在 Project Euler 上解决问题用 ruby 。

我通过以下代码解决了问题 #3:

require 'prime'

division = Prime.prime_division(600851475143)
puts division.last.first

我决定看一下 Prime#prime_division,这里是 code :

def prime_division(value, generator = Prime::Generator23.new)
raise ZeroDivisionError if value == 0
if value < 0
value = -value
pv = [[-1, 1]]
else
pv = []
end
for prime in generator
count = 0
while (value1, mod = value.divmod(prime)
mod) == 0
value = value1
count += 1
end
if count != 0
pv.push [prime, count]
end
break if value1 <= prime
end
if value > 1
pv.push [value, 1]
end
return pv
end

while 语句是如何工作的?

while (value1, mod = value.divmod(prime)
mod) == 0
...
end

我尝试在没有换行符的情况下运行它 (value1, mod = value.divmod(prime) mod) == 0 但出现错误。

换行符代表什么?

最佳答案

圆括号可以包含多个语句。 (语句由换行符或 ; 分隔)

以下是来自疑似BNFによるRubyの文法的相关部分

COMPSTMT        : STMT (TERM EXPR)* [TERM]

TERM : `;'
| `\n'

PRIMARY : `(' COMPSTMT `)'
| ...

最后一个表达式的值成为 (...) 表达式的返回值。

(a = 1
a + 1)
# => 2

关于ruby - Prime#prime_division 中的 while 语句如何工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21131195/

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