获取3至100之间质数的R代码无输出,请求排查错误
代码错误分析与修正
核心错误:内层循环的
(2:i-1)写法有问题。R里冒号:的优先级比减法高,2:i-1会被解析成(2:i) - 1。比如i=3时,2:3得到c(2,3),减1后变成c(1,2),k会取到1,任何数对1取余都是0,直接把prime设为FALSE,所以所有数都被判定为非质数,自然没输出。修正后的代码:把内层循环范围改成
2:(i-1),用括号明确优先级,保证生成从2到i-1的序列:
for (i in 3:100) { prime <- TRUE for (k in 2:(i-1)) { if (i %% k == 0) { prime = FALSE break } } if (prime == TRUE) { print(i) } }
- 补充说明:你给出的期望质数里有9,但9不是质数(3×3=9),修正后的代码会正确排除这类数,输出3到100之间的所有真实质数。
内容的提问来源于stack exchange,提问作者diasyy
相关产品推荐
相关产品推荐

