函数来查找R上的素整数
为什么我的R代码不能工作(即找不到素数)函数来查找R上的素整数,r,R,为什么我的R代码不能工作(即找不到素数) x这里有一些问题 根据@r2evans注释,if条件需要采用长度为1的输入参数。您可以使用all命令绕过此问题 您的if条件在逻辑上是错误的。如果mod运算符等于0,则它不是素数。如果你真的想做0 2被认为是质数。您的逻辑对2无效,因为2%2=0。因此,您需要以不同的方式处理该情况。或者该功能需要在3点开始工作 以下是一个工作版本: prime <- function(x){ if(x == 2){ print("p"
x这里有一些问题
根据@r2evans注释,if条件需要采用长度为1的输入参数。您可以使用all
命令绕过此问题
您的if条件在逻辑上是错误的。如果mod运算符等于0,则它不是素数。如果你真的想做0
2被认为是质数。您的逻辑对2无效,因为2%2=0。因此,您需要以不同的方式处理该情况。或者该功能需要在3点开始工作
以下是一个工作版本:
prime <- function(x){
if(x == 2){
print("p")
}
else if(all(x %% (2:(x-1)) != 0)) {
print("p")
} else {
print("np")
}
}
> prime(2)
[1] "p"
> prime(3)
[1] "p"
> prime(4)
[1] "np"
> prime(5)
[1] "p"
> prime(6)
[1] "np"
> prime(7)
[1] "p"
素数素数(2)
[1] “p”
>素数(3)
[1] “p”
>素数(4)
[1] “np”
>素数(5)
[1] “p”
>素数(6)
[1] “np”
>素数(7)
[1] “p”
这里有几个问题
根据@r2evans注释,if条件需要采用长度为1的输入参数。您可以使用all
命令绕过此问题
您的if条件在逻辑上是错误的。如果mod运算符等于0,则它不是素数。如果你真的想做0
2被认为是质数。您的逻辑对2无效,因为2%2=0。因此,您需要以不同的方式处理该情况。或者该功能需要在3点开始工作
以下是一个工作版本:
prime <- function(x){
if(x == 2){
print("p")
}
else if(all(x %% (2:(x-1)) != 0)) {
print("p")
} else {
print("np")
}
}
> prime(2)
[1] "p"
> prime(3)
[1] "p"
> prime(4)
[1] "np"
> prime(5)
[1] "p"
> prime(6)
[1] "np"
> prime(7)
[1] "p"
素数素数(2)
[1] “p”
>素数(3)
[1] “p”
>素数(4)
[1] “np”
>素数(5)
[1] “p”
>素数(6)
[1] “np”
>素数(7)
[1] “p”
如果
要求其条件为长度1,则您的条件远远超出此范围。也许!任何(x%%…)
?值得注意的是,如果您包含了在尝试函数时收到的任何警告,您将看到数值表达式有50个元素:只有第一个使用的
,即提示#1,那么较长的对象长度不是较短对象长度的倍数
,这包含在许多问题/答案中,正如一样,条件的长度大于1,并且只使用第一个元素。顺便说一句:根据我的经验,像这样打印东西的函数几乎是无用的。考虑<代码>返回<代码> ING值,而不是<代码>打印< /代码> ING。此外,考虑返回一个逻辑(<代码>真< /代码>或代码> false <代码>)。当我的第一个注释暗示它时,假定<代码>“p”<代码>意味着Prime和<代码>“NP”< /代码>意味着不是Prime——您的逻辑是错误的。如果在x%%(2:(x-1))
中有任何0,那么它就不是素数,因为它可以被除1和自身之外的其他东西整除。如果要求它的条件是长度1,那么你的条件就远远超出了这个范围。也许!任何(x%%…)
?值得注意的是,如果您包含了在尝试函数时收到的任何警告,您将看到数值表达式有50个元素:只有第一个使用的
,即提示#1,那么较长的对象长度不是较短对象长度的倍数
,这包含在许多问题/答案中,正如一样,条件的长度大于1,并且只使用第一个元素。顺便说一句:根据我的经验,像这样打印东西的函数几乎是无用的。考虑<代码>返回<代码> ING值,而不是<代码>打印< /代码> ING。此外,考虑返回一个逻辑(<代码>真< /代码>或代码> false <代码>)。当我的第一个注释暗示它时,假定<代码>“p”<代码>意味着Prime和<代码>“NP”< /代码>意味着不是Prime——您的逻辑是错误的。如果在x%%(2:(x-1))
中有任何0,那么它就不是素数,因为它可以被除1之外的东西和它本身整除。@r2evans:hah!打字错误固定的。谢谢你@埃文斯:哈!打字错误固定的。谢谢你!