哥德巴赫猜想提出:

任一个大于2的偶数,都可以表示为两个素数之和。

根据哥德巴赫猜想,本文运用R进行验证。

  • 判断一正数是否是素数;
  • 求出100以内的所有素数;
  • 对任何一个大于2 的偶数,求出一对素数,它们之和等于该偶数,并将结果展示出来。

方法一:直接使用功能函数

***缺点:*只能进行判断,且只能单个数字地进行,不可批量筛选

p<-primes(10)#直接输入数字进行判断

方法二:迭代筛选方法计算

运用基本的计算方法对筛选素数,与求和。
***缺点:*计算迭代次数过多,数值越大,时间需花费越多。

#找100之间的素数
a<-0
#1不是素数,所以n从2开始跑
newdata=c()#创建一个空表
n<-2
while (n <= 100){####如果要改个数,就改这里和下面同样四个井号键的地方,保持一致f<-0i<-2#当能被整除等于0,结果不为素数while (i < (n-1)){if (n%%i==0){f=1break}i <- i+1}if (f == 0){newdata=rbind(newdata,n)#每一次循环的数据结果放在表中print(n)a <- a+1}n <- n+1
}
paste("100之间的素数有" ,a)
qsg<-newdata[1:3,]#显示数据表的前三行
print(qsg)fix(sendata)#更改数据表的变量名,要先运行一遍程序,在缓存库中有sendata之后,再执行该操作#把所有偶数划分为一对相加素数
n2=4
b<-length(newdata[,1])
sendata=c()
repeat{for (k in 1:b) {x<- newdata[k,1]for (j in 1:b){y<- newdata[j,1]f=x+yc<-c(x,y,f)sendata=rbind(sendata,c)j<- j+1}k<-k+1  }newsendata <- sendata[!duplicated(sendata[,3]),]#提取唯一行n3<- length(newsendata[,1])for(r in 1:n3){if(newsendata[r,3] == n2){m<- newsendata[r,]sy<- list(m)print(paste("1000以内的偶数被分解为两素数之和分别是:",sy))}      }n2<- n2+2if(n2>100){####如果要改个数,就改这里和上面同样四个井号键的地方,保持一致break}
}

学习点:
R语言中的三种循环方式:

循环结构 意义
for循环 也称“计数循环”,比较简明
while循环 “当型循环” ,先判断,后执行
repeat循环 “直到型循环”,先循环,后判断
  • 当循环次数未知的时候,只能根据某一条件来决定是否进行循环时,用while语句repeat语句实现循环要更方便。
  • repeat语句:repeat…until或repeat if back

方法三:引入功能函数判断是否为素数


sushu <- function(x){ifelse(0 %in% c(x %% c(2:ceiling(sqrt(x)))),"FALSE","TRUE")}sushu(17)

方法四:将偶数拆分为两个质数之和——下载并运用pracma包

install.packages("pracma")#下载pracma包
#若下载了,后续从liabrary开始运行library(pracma)#应用
p<-primes(1000)#对素数的直接提取
a<-c()
for(i in seq(from = 4, to = 1000, by = 2)){#偶数for(j in p){if(j<=i/2 && isprime(i-j) ){ss<-c(j,i-j) #ss就是分解偶数为两个素数的素数对a<-rbind(a, ss)h<- a[,1]+a[,2]#计算两素数之和solution<-cbind(a[,1:2],h)}}
}
print(solution)
  • 注意:
    这样的代码出来的结果可以显示一个偶数可以分解为的所有质数之和,如果仅需要一对素数和,可以参照方法二的[!duplicated(data[,3]),]数据筛选提取代码。

a<-rbind(a, ss)处延申学习
如果在进行数据接续排列的时候,也可以用append,即a<-append(a, ss)

区别:

  • rbind是将数据用上下方式合并向量或矩阵,拼成一个新的矩阵;
  • append表示的是新产生的数据直接排在后面,不是构成数据表;
  • cbind是数据以左右的方式合并向量或矩阵,拼成一个新的矩阵;

注意:在使用rbind()、cbind()时,注意要事先定义好一个矩阵,在循环迭代的过程中对矩阵进行赋值。如果循环迭代过程中有cbind,会导致循环中反复创建矩阵,是非常耗费时间与运行速度的。

R代码验证1000以内的哥德巴赫猜想——①求素数②偶数分解为两质数之和相关推荐

  1. c语言偶数分解成两个素数,如何用C语言验证2000以内的哥德巴赫猜想,对于任何大于4的偶数均可以分解为两个素数之和....

    题目: 如何用C语言验证2000以内的哥德巴赫猜想,对于任何大于4的偶数均可以分解为两个素数之和. 我是大一新生,代码不能太复杂 解答: //首先生成质数表,然后双重循环输出2000以内所有偶数的两个 ...

  2. r语言寻找1000以内的质数

    有没有大神能不能说说哪里出问题了啊,为什么我输出的不是1000以内的质数啊!!!

  3. 用c语言验证1000以内的卡拉兹(Callatz)猜想

    卡拉兹(Callatz)猜想: 对任何一个正整数 n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那么把 (3n+1) 砍掉一半.这样一直反复砍下去,最后一定在某一步得到 n=1.卡拉兹在 1950 ...

  4. 哥德巴赫猜想计算机验证进展,哥德巴赫猜想的最新进展,不知道下文证明的是否正确,求验证...

    哥德巴赫猜想的最新进展,不知道下文证明的是否正确,求验证0 不倒翁lisir2014.05.21浏览105次分享举报 从质数定理哥德巴赫猜想 Sha Yin-Yue Room 105,9, TaoYu ...

  5. python123输出N以内的所有素数哥德巴赫猜想扑克牌游戏

    描述‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬ ...

  6. Codeforces 432C (哥德巴赫猜想的巧妙应用)

    C.Prime Swps time limit per test 2 seconds memory limit per test 256 megabytes input standard input ...

  7. 信息学奥赛一本通(c++):1157:哥德巴赫猜想

    一.题目 1157:哥德巴赫猜想 时间限制: 1000 ms         内存限制: 65536 KB [题目描述] 哥德巴赫猜想的命题之一是:大于6 的偶数等于两个素数之和.编程将6-100所有 ...

  8. 哥德巴赫猜想(java)

    哥德巴赫猜想:每一个不小于6的偶数都是两个奇素数之和,在这里的关键就是把一个大于等于6的偶数分解成两个质数,把一个数分解成两个数之和很好办,但要是两个质数,我们就需要先掌握判断质数的方法. 判断质数: ...

  9. java求1000以内的回文素数_C语言求回文素数

    任意的整数,当从左向右读与从右向左读是相同的,且为素数时,称为回文素数.求 1000 以内的所有回文素数. 算法思想 实例的重点是判断一个数是否是回文素数.要输出 1000 以内的所有回文素数,首先应 ...

最新文章

  1. 关卡设计快速入门_1. 创建新项目
  2. 计算机能自动写程序,忘掉编程语言吧,微软想让计算机自动生成程序 | 一周 AI 新闻...
  3. JAVA并发编程3_线程同步之synchronized关键字
  4. MySQL查询指定时间的数据
  5. 在线验证json字符串
  6. 下拉框根据输入文字自动选择和输入提示
  7. 彻底的清除Office 以便重新安装
  8. java2月天数_java根据当前日期+指定天数(月份...)得到相应日期,计算两日期之差...
  9. 模拟生命_吸烟致癌?
  10. nginx基础配置,转发所有
  11. ISO14000标准与ISO9000标准异同(转载)
  12. 用Python操作PPT的办公自动化教程
  13. MathType的使用技巧
  14. 腾讯前辈熬夜肝了一个月整理的《Linux内核学习笔记》,啃完受益匪浅不走弯路
  15. 苹果电池显示维修_苹果新款 iPhone SE 屏幕维修、电池更换多少钱?
  16. define宏定义函数及用模板函数实现同样的功能
  17. AutoCAD .NET 二次开发实例:批量文本查找替换
  18. 【程序猿的黑科技】一些有趣且有用的的工具整理
  19. python 多线程实现多任务,多进程实行多任务
  20. ES6模块体系及DDN区块链设计开发规范

热门文章

  1. 使用vscode开发esp32
  2. softdevice和应用程序之间的交互
  3. ppt出现图片无法裁剪的现象
  4. 人群计数:COUNT Forest: CO-voting Uncertain Number of Targets using Random Forest for Crowd Density
  5. 中国民营医疗行业运行效益分析及未来发展形势规划建议报告2022年版
  6. 国内模具及注塑行业(精辟模具文章)
  7. vue-echarts入门使用
  8. Python编程:twine模块打包python项目上传pypi
  9. 手机文件合并工具 android,手机视频合并工具 用安卓手机怎样把多个视频片段合并成一个视频...
  10. Python中数组转换成字符串