【问题标题】:How do I create a vector of prime factors from a vector of all factors for a given number?如何从给定数字的所有因子的向量中创建素因子向量?
【发布时间】: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::primeFactorsRcppAlgos::primeFactorize可以接受?
  • 我想写一个理想的函数,虽然我对你提到的其他解决方案很感兴趣。

标签: r loops vector append


【解决方案1】:
n<-c()
for (i in p){
    if (sum(i/1:i==i%/%1:i)==2){
        n=c(n,i)
    }
}

max<-max(n)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-04-12
    • 1970-01-01
    • 1970-01-01
    • 2017-11-12
    • 1970-01-01
    • 2011-06-15
    • 1970-01-01
    相关资源
    最近更新 更多