R语言自编函数与结果输出

编写函数实现以下功能

1、对于任意给定的一个数n,找出1到n之间的所有质数。

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

library(purrr)#加载迭代包
zhishu=function(x){
             f=function(x){
                 a=1:x
           C=x%%a
           if(sum(C==0)==2) 
           return(x)
           else
           return(NULL) }
          a=unlist(map(1:x,f))
               return(a)
                       }  #任意给定数x找到1:x之间的所有质数 
b=zhishu(1000)#1:1000之间的所有质数
 

#找出 1000 以内所有恰好能够被两组不同质数相加得到的偶数
new=function(a){
          structure(list(zh1=a[1],zh2=a[2],he=a[3]),
                    class="hand")}
print.hand=function(x){
               cat(x$zh1,"+",x$zh2,"=",x$he,"\n")
                       }

b=zhishu(1000)
zhishu1=function(b){
           a=as.data.frame(t(combn(b,2)))  
           a$C=apply(a,1,sum)
           w=table(a$C[a$C%%2==0 & a$C<=1000])#观察次数
           e=as.data.frame(w[w==2])
           mei=as.matrix(a[which(a$C %in% e[,1]),]) 
                return(mei)    }
mei=zhishu1(b)#返回矩阵

mei1=apply(mei,1,new)

由于输出比较多,感兴趣的小朋友运行代码就可以了

  • 7
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

麻利麻利哄吧

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值