【发布时间】:2020-11-19 02:06:58
【问题描述】:
我使用 for 循环和 append 函数为给定数字生成了一个因子列表,我知道不推荐这样做。
p<-13195
for(i in (p-1):1){
if ((p%%i)==0){
p<-append(p,i)
}
}
我现在试图报告这个向量的最大素数,我使用了一个 for 循环来打印素数,这是相对简单的。 (我缺少 1,可以轻松添加,但我对那个值不感兴趣。)
for (i in p){
if (sum(i/1:i==i%/%1:i)==2){
print(i)
}
}
但是,我只想打印最大的素数。我已经尝试了几件事来做到这一点,但它们返回错误,例如
for (i in p){
if (sum(i/1:i==i%/%1:i)==2){
i<-append(1,i)
}
}
不起作用。另外,我对使用 append 函数持谨慎态度。我知道 R 并没有针对循环进行优化,我正在努力发展我作为程序员的技能,所以我正在寻找循环的替代方案,但我不介意解决方案是什么。理想情况下,我想要一个素数向量,以便我可以轻松应用
max()
谢谢。
【问题讨论】:
-
你想写一个函数还是
numbers::primeFactors或RcppAlgos::primeFactorize可以接受? -
我想写一个理想的函数,虽然我对你提到的其他解决方案很感兴趣。