【发布时间】:2019-03-25 11:20:22
【问题描述】:
从给定的输入向量中获取一个由素数组成的向量作为输出。在 Python 中工作,其中我将输入列表中的每个素数附加到一个空列表中,但在 R
中没有得到正确的输出Python 代码:
def get_prime(input_list):
output_list = []
for num in input_list:
for i in range(2, num):
if num%i == 0:
break
else:
output_list.append(num)
return output_list
输出:
get_prime([3,4,5,6,7,8])
[3, 5, 7]
R 代码:
get_prime <- function(input_number_vector){
prime = c()
for(num in input_number_vector){
for(div in 2:(num-1)){ if(num %% div == 0) break
else prime = c(prime,num)
}
}
prime
}
输出:
x <- c(3,4,5,6,7,8)
> get_prime(x)
[1] 3 5 5 5 7 7 7 7 7
预期输出:
3,5,7
看起来像奇数:每次模数条件检查都会附加一次 3、5、7。即 3 一次,除数为 2,5 三次,除数为 2,3,4 和 7,除数为 2,3,4,5,6。 有人可以让我知道我哪里出错了,以及 R 在这方面的工作方式是否与 Python 不同。
【问题讨论】:
-
R 代码与 Python 代码完全不同。它们相似但不相同(R 代码附加到内部循环内的向量)。
-
每次余数不为零时,您都会更新
prime向量。如果您尝试使用一些奇数的非质数,此代码将多次打印该数字,因为从 2 开始,超过第一个除数的数字越多。