全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
6403 2
2019-06-07

           找出1000以内所有能够被两组不同质数相加得到的偶数(例如:12=5+7为一组不同的质数,14=7+7为一组相同的质数,18=5+13和18=7+11为两组不同的质数,56=3+53、56=13+43和56=19+37为三组不同的质数),注意最后输出的结果要包括偶数本身,以及对应相加的质数




二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2019-6-7 22:39:49
function()is.prime <- function(n)
{
  if(mode(n)!="numeric" || n<2) return(FALSE)

  root <- floor(sqrt(n)); int_n=floor(n)
  if(int_n==2 || int_n==3) return(TRUE)

  for(k in 2:root)
    if( (int_n %% k)==0 ) return(FALSE)
  return(TRUE)
}

getprime <- function(x)
{
  if(mode(x)!="numeric" || x<2) return(c())

  result <- c(); len=0
  int_x=floor(x)

  for(n in 2:int_x)
    if(is.prime(n)){ len=len+1; result[len]=n }

  return(result)
}

getprime(10)



二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2019-6-7 22:41:41
yankos 发表于 2019-6-7 22:39
function()
myprimes <- getprime(500)  #get all primes that are less than 500

result <- list()
for(n in seq(4, 1000, 2))
{
  ret <- c(n)
  for(k in myprimes){
    if(k>=n/2) break
    if((n-k) %in% myprimes) ret[length(ret)+1]=k   #get a combination
  }
  if(length(ret)==3) result[[length(result)+1]] <- ret
}
  
for(n in 1:length(result))
{
  ret=result[[n]]
  cat(ret[1], "=", ret[2], "+", ret[1]-ret[2], "\t", sep="")
  cat(ret[1], "=", ret[3], "+", ret[1]-ret[3], "\n", sep="")
}
晓得啦
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群