我需要一些反馈来弄清楚为什么我在屏幕上的方法中无法puts
或print
。这是我写的一个简单的脚本,用于解决找到第1001个素数的问题。感谢
def primes
# iterates through numbers until it has the 1001th prime number and returns it.
# I chose to create the num_primes variable instead of counting the number of
# elements in in_prime_array every iteration
# based upon a guess that it would be faster to check.
is_prime_array = []
num_primes = 0
i = 2
loop do
is_prime_array << i && num_primes += 1 if is_prime?(i) == true
i += 1
break if num_primes == 1001
end
is_prime_array[1001]
end
def is_prime? (num)
# Checks to see if the individual number given is a prime number or not.
i = 2
loop do
if i == num
return true
elsif num % i == 0
return false
else
i += 1
end
end
end
感谢您的帮助!
修改
我接受了你的建议,尝试了这段代码:
def is_prime? (num)
# Checks to see if the individual number given is a prime number or not.
i = 2
loop do
if i == num
return true
elsif num % i == 0
return false
else
i += 1
end
end
end
i = 0
count = 0
loop do
count += 1 if is_prime?(x)
puts "#{i}" if count == 1001
break
end
它仍然没有返回任何内容。 Hummm
答案 0 :(得分:2)
i = 0
count = 0
loop do
if is_prime(i)
count += 1
end
if count == 10001
puts "#{i}"
break
end
end
简单方法:)
答案 1 :(得分:1)
这是一个错误的错误。如果数组中有1001个元素,则最后一个元素将位于索引1000处。
你在哪里
is_prime_array[1001]
将其更改为
is_prime_array[1000]
你可以这样做:
puts primes
=> 7927
你也可以
is_prime_array.last
而不是特定的索引号。
答案 2 :(得分:1)
你想要“放”什么?我注意到的第一件事是文件中没有调用primes
,所以如果你试图自己运行这段代码就不会发生任何事情。也许这就是你没有看到任何印刷品的原因。
以下是如何在循环中打印一些变量的示例:
loop do
...
puts "At iteration #{i}, we have prime=#{is_prime?(i)}"
如果您不知道,在字符串中包含#{<statement goes here>}
的语句与将<statement goes here>
的返回值附加到该位置的字符串相同。这与Java等语言中的"Str " + blah + " rest of str"
相同。