求R中给定n的k-光滑数
需要找到给定n的所有k-光滑数。 我尝试了以下方法:求R中给定n的k-光滑数,r,R,需要找到给定n的所有k-光滑数。 我尝试了以下方法: library(gmp) S <- c(1:30) test <- function(range, k){ if(!isprime(k)==2){ print("k should be a prime number") } else{ for(i in range[1]:range[length(range)]){ pf <- as.integer(factorize(i))
library(gmp)
S <- c(1:30)
test <- function(range, k){
if(!isprime(k)==2){
print("k should be a prime number")
}
else{
for(i in range[1]:range[length(range)]){
pf <- as.integer(factorize(i))
if(max(pf) <= k){
print(range[i])
}
}
}
}
我想摆脱这个警告。请帮忙!factorize()函数返回bigz是否有问题。将其更改为as.integer(factorize(i))?无法理解警告的原因问题是
factorize(1)
# bigz(0)
length(factorize(1))
# [1] 0
返回一个空向量。当你取一个空向量的最大值时,你会得到警告
max(numeric())
# [1] -Inf
# Warning message:
# In max(numeric()) : no non-missing arguments to max; returning -Inf
你到那里是因为
isprime(1)
# 0
因此根据
isprime()的定义,
1不是质数。因此,我不确定您希望如何处理数字1,但这是您的问题。问题在于S中的第一个值
as.integer(factorize(1))
产生integer(0)
和max(integer(0))
产生该错误
您可以这样修复它:
if (length(pf)!=0) {
if(max(pf) <= k){
print(range[i])
}
}
if(长度(pf)!=0){
如果(最大值(pf)
if (length(pf)!=0) {
if(max(pf) <= k){
print(range[i])
}
}