Ruby代码不起作用

时间:2014-10-20 00:15:53

标签: ruby if-statement

这是Euler Project Number 1

sum = 0
array = []

for num in 1...1000
    if num % 3 === 0
        sum = sum + num
        array.push(num)
    end
    if num % 5 === 0
        sum = sum + num
        array.push(num)
    end
end

#puts array
puts sum

当我使用10作为范围运行程序时,我得到了正确的输入,但是当我使用1000时,我的答案是266333,而正确答案是{{ 1}}根据答案作弊。你能告诉我我做错了吗?

1 个答案:

答案 0 :(得分:2)

您需要elsif而不是两个if语句。目前你有一些可被3和5整除的数字,它们被加到总和中两次。

for num in 1...1000
    if num % 3 === 0
        sum = sum + num
        array.push(num)
    elsif num % 5 === 0
        sum = sum + num
        array.push(num)
    end
end

或更好的方式:

for num in 1...1000
    if num % 3 == 0 || num % 5 == 0
        sum = sum + num
        array.push(num)
    end
end