Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
求R中给定n的k-光滑数_R - Fatal编程技术网

求R中给定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))

需要找到给定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))
      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]) 
   }
}