我试图测试欧拉的素性测试的准确性。我写了一个函数euler(),它接受一个数字并测试所有数字的素数,直到输入并将它们输出到包含非引数的控制台。这是它看起来如何:把一个函数的输出放入一个数据框或一个列表或一个向量R
euler(10)
[1] 1
[1] 2
[1] 3
[1] "Not prime:" "4"
[1] 5
[1] "Not prime:" "6"
[1] 7
[1] "Not prime:" "8"
[1] "Not prime:" "9"
[1] "Not prime:" "10"
>
我想要把这个输出并把它放到一个数据框架或一个因素或列表。我试过x<-euler(10)
,但没有奏效。我只是得到一个NULL向量。这里是我的欧拉函数的代码:我试图定义外的“for”循环,然后使用rbind()数据帧
## Euler's primality test
euler <- function(k) {
for(i in 1:k) {
a <- 2;
if((a^i-a) %% i == 0) {
print(i)
} else{print(c("Not prime:",i))}
}
}
,但我不知道该怎么做时,有一个if语句。任何帮助赞赏。如果我不清楚,请告诉我,我会进行必要的修改。
该功能执行不力。它应该**返回结果,而不是直接打印。你*可以捕获这个输出,但这不是合适的解决方案。适当的解决方案是重写'euler'来不打印结果(这是忽略该函数也包含语义错误:这不*是欧拉的素性测试的适当实现)。 –
@KonradRudolph是的我知道它不是。这里的重点是让我学习如何获取输出并将其放入数据框中。顺便问一下,你是否知道讨论欧拉原理性测试的好论文,或者至少与解释有关?对不起,这些请求。 – Koba
有关说明,[维基百科文章](https://en.wikipedia.org/wiki/Solovay%E2%80%93Strassen_primality_test)其实并不差。 –