【发布时间】:2014-03-08 08:55:54
【问题描述】:
问题
找出所有能被 3 或 5 整除的小于 1000 的数字的总和
我创建的一个解决方案:
x <- c(1:999)
values <- x[x %% 3 == 0 | x %% 5 == 0]
sum(values
第二个解决方案我无法上班,需要帮助。我已经把它贴在下面了。 我正在尝试使用循环(在这里,我使用 while(),然后我将尝试 for())。我仍在努力将索引(向量中的位置)的引用与向量中的值/观察值分开。循环似乎让我更难区分这两者。
为什么这不能产生 Euler #1 的答案?
x <- 0
i <- 1
while (i < 100) {
if (i %% 3 == 0 | i %% 5 == 0) {
x[i] <- c(x, i)
}
i <- i + 1
}
sum(x)
用文字来说,这就是我所理解的正在发生的事情:
- x 的值为 0
- i 得到值 1
- 虽然对象 i 的值(不是索引 #)是
- 如果能被 3 或 5 整除
- 将数字 i 添加到向量 x
- 按顺序将 1 添加到 i(以保持循环达到定义的 1e3 限制
- 对向量 x 中的所有项求和
我猜 x[i]
【问题讨论】:
-
解决保持索引和值分离问题的更通用方法是更具描述性的名称。尽管
i是标准的索引,但您也可以将其用作数字。在这个例子中,你可以打电话给inumbers_to_test和xsuccesses,这样你就不用费力去记住是什么了。
标签: r for-loop while-loop