我正在用红宝石解决Euler项目上的问题。
我通过以下代码解决问题#3:
require 'prime'
division = Prime.prime_division(600851475143)
puts division.last.first我决定看一看Prime#prime_division,这是代码
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
endwhile语句是如何工作的?
while (value1, mod = value.divmod(prime)
mod) == 0
...
end我尝试在没有换行符(value1, mod = value.divmod(prime) mod) == 0的情况下运行它,但得到了错误。
新线代表什么?
发布于 2014-01-15 07:35:09
括号可以包含多个语句。(语句用换行符或;分隔)
以下是疑似BNFによるによるの文法的相关部分
COMPSTMT : STMT (TERM EXPR)* [TERM]
TERM : `;'
| `\n'
PRIMARY : `(' COMPSTMT `)'
| ...最后一个表达式的值成为(...)表达式的返回值。
(a = 1
a + 1)
# => 2https://stackoverflow.com/questions/21131195
复制相似问题