我写了一个R函数来检查一个数x是否是质数。如果不是,就打印这个数的因子。在代码中,除了打印一个非质数的因子外,一切似乎都很好。我尝试了很多技巧,但都不起作用。我需要帮助。
prime = function(x){
if(x>1){
for(i in 2:(x/2+1)){
if(x%%i==0){
print(paste(x,"is not a prime number"))
print(paste("The factors of",x,"are:"))
for (j in 1:(x+1)){
if(x%%j==0){
print(paste(j,""))
break
}
}
}else{
print(paste(x, "is a prime number"))
break
}
}
}else{
print(paste("Enter value is that is greater than 1"))
}
}
当我调用这个函数时,它给出了下面的输出
> prime(0)
[1] "Enter value is that is greater than 1"
> prime(19)
[1] "19 is a prime number"
> prime(4)
[1] "4 is not a prime number"
[1] "The factors of 4 are:"
[1] "1 "
[1] "4 is a prime number"
一切正常,但我无法打印不是素数的x的因子。谢谢
1条答案
按热度按时间vltsax251#
验证码:
for
循环中使用print
;i+1
开始,因为您已经知道2:(i-1)
不是因子。for
循环中,你永远不应该报告它"是一个质数",因为......你还没有完成for
循环,因此不知道你是否已经穷尽了可能的因子的完整列表。我建议使用矢量化操作,而不是
for
循环。演示:
如果您必须使用
for
循环,并且需要报告数字的所有因子,那么我建议将已知因子附加到向量,并在for
循环之外检查其长度以进行报告。演示