运行该功能时如何排除1?

时间:2017-02-17 01:39:40

标签: r

问题是: 有一个包含功能的包,可以检查数字是否为素数。 install.packages(“schoolmath”)library(schoolmath)is.prim(3) 创建一个接受两个整数的函数(将默认值设置为1)。该函数应计算两个值之间的素数数。 我的代码是:

install.packages("schoolmath") 
library(schoolmath) 
is.prim(3)

prime <- function(x)
{

    p <- 0
    p1 <- ifelse(is.prim(x) == "TRUE", p + 1, p)
    return(sum(p1 == 1))
   }
prime(seq(1,10,1))

当我运行该函数时,它也将1作为素数,这不是真的。如何有效地排除功能?

1 个答案:

答案 0 :(得分:0)

您可以稍微简化一下您的功能,因为is.prim适用于向量并查看sum函数的文档:

  

逻辑真值被视为一,假值为零。

这是一个计算向量

中素数的函数
count.primes <- function(x) {
   sum(x > 1 & is.prim(x))
}

示例:

count.primes(1:10)
# [1] 4

count.primes(1:20)
# [1] 8