`
hpjianhua
  • 浏览: 235424 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类

判断素数与哥德巴赫猜想

阅读更多

判断一个数是否是素数与验证哥德巴赫猜想问题

素数

质数又称素数。指在一个大于1的自然数中,除了1和此整数自身外,没法被其他自然数整除的数。换句话说,只有两个正因数(1和自己)的自然数即为素数。比1大但不是素数的数称为合数。1和0既非素数也非合数。素数在数论中有着很重要的地位。


哥德巴赫猜想:任意一个大于等于6的偶数都可以分解为两个素数之和;

 

如何判断一个数是否是素数呢?

 

一般的方法是用For循环迭代,而迭代变量的范围一般是取到我们要求的值,比如说是100,范围即为到100,经过大量的验证,一种更有效率的方法是,迭代变量的取值范围不用取到100,而是取得100的开根号即可;

 

下面给出判断是否为素数的代码:

	public static boolean isPrime(int num) {
		int sqrt = (int) Math.sqrt(num);
		for (int i = 2; i <= sqrt; i++) {
			if (num % i == 0) {
				return false;
			}
		}
		return true;
	}

 

 

然而,如何判断一个数是否是素数的方法,已经知道了,下面再来验证哥德巴赫猜想,为什么前面会给出验证是否是素数的方法呢?

 

因为验证哥德巴赫猜想需要用到它;

 

现在我们再来看定义:

 

哥德巴赫猜想:任意一个大于等于6的偶数都可以分解为两个素数之和;

 

两个素数?普通的做法就是用两个For循环迭代,判断两次是否为素数,然而一种更有效率的方法是:

先判断P1是素数,而且判断 P2=n-P1也是素数,如果是这样的话,就输出结果,这样是不是比两次For循环迭代更有效率呢?

 

下面我们再给出如何验证哥德巴赫猜想的代码:

 

		for(int j = 6;j<100;j+=2){
			for(int i = 2; i < j ; i++){
				if(isPrime(i)&& isPrime(j-i)){
					System.out.println(j+"="+i+" + "+(j-i));
					break; // 找到一对即跳出循环
				}
			}
		}

 

 

这些简单的算法问题,在很多有过算法经验的人看来,都是一些不值一提的小算法,但事情往往是这样的,很多高深的算法也是由一些看似简单的算法演变而来的,所以我们不能掉以轻心;

 

以上算法代码及思想,用作学习交流之用,如果有什么地方写得不对的,敬请批评指出,谢谢~

0
0
分享到:
评论

相关推荐

    分解质因数与判断是否是素数并验证哥德巴赫猜想

    包含以下三道例题:(C++代码求解) 1.求出指定范围内的所有...3.哥德巴赫猜想之一是,任何一个不小于6的偶数都可以表示为两个素数之和,例如,6=3+3,8=3+5,10=3+7等,试建立一个Guess类,验证6~100之间的所有偶数。

    验证100以内哥德巴赫猜想

    验证100以内哥德巴赫猜想,使用函数判断是不是素数并用空格分隔各组答案。本程序在vc6.0下调试通过

    ACM试题验证哥德巴赫猜想

    验证哥德巴赫猜想,判断素数,求出质数,ACM常考题

    java 验证哥德巴赫猜想

    写一个方法判断一个数是否为素数,返回布尔值。利用该方法验证哥德巴赫猜想:任意一个不小于3的偶数可以拆成两个素数之和。不妨将验证范围缩小到3~100。

    c++经典实验验证哥德巴赫猜想

    了解函数的使用,以及素数的判断

    【PYTHON练习题】验证哥德巴赫猜想.pdf

    【PYTHON练习题】验证哥德巴赫猜想 【PYTHON练习题】验证哥德巴赫猜想 编制判断素数的Sub函数或者Function函数,验证哥德巴赫猜想:⼀个不⼩于6的偶数可以表⽰为两个素数之和。例 如,6=3+3,8=5+3,10=3+7. x=int...

    C语言常用算法的学习与总结

    一、计数、求和、求阶乘等简单算法 二、求两个整数的最大公约数、最小公倍数 三、判断素数 四、验证哥德巴赫猜想 五、排序问题

    求任意正整区间的所有素数

    素数看似简单、实则神奇,且奥秘无穷,数百年来,引无数数学英才为其着迷,毕生追求,并衍生出众多命题和分支,闻名遐迩的的哥德巴赫猜想和费马数,只是素数研究诸多命题沧海一粟、冰山一角。 而要研究素数规律,...

    c 语言 常用的算法

    C语言 中常用的算法 一、计数、求和、求阶乘等简单算法 二、求两自然数的最大公约数和最小公倍数 判断素数 四、验证哥德巴赫猜想 五、穷举法 。。。。。。

    使用Python判断质数(素数)的简单方法讲解

    质数又称素数。指在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数。素数在数论中有着很重要的地位。... 前几天偶尔的有朋友问python怎么判断素数的方法,走网上查了查,总结了python脚本判断一

    sushu.rar_sushu()函数

    用函数过程判断某数是否为素数,利用此函数完成: 1、输出3-100之间的素数; 2、验证哥德巴赫猜想(每一个大于2的偶数都可以表示为两个素数的和)即对于一个偶数。输出他的所有素数和的形式。

    C语言常用算法(很全,内有详细例子)

    常用算法一 一、计数、求和、求阶乘等简单算法 此类问题都要使用循环,要注意根据问题确定...四、验证哥德巴赫猜想 五、穷举法 五、穷举法 常用算法二 排序问题 1.选择法排序 2.冒泡法排序(升序) 数据查找 ……

    C语言程序设计-精选习题和案例

    主要案例:进制转换,闰年判断,计算器,水仙花数,九九乘法表,哥德巴赫猜想,图形输出,单词个数统计,首字母转换,正整数分解质因数,数字排列,扩展的素数问题,成绩分类,选手得分计算,连续非素数组,矩阵转置...

    Python案例集锦-0414.docx

    程序41: 验证哥德巴赫猜想 36 程序42: 解方程 37 程序43: 异常处理 38 程序44: 统计不及格人数(continue语句) 39 程序45: 求直角三角形的斜边 39 程序46: 问年龄 40 程序47:求相同数字的和 41 程序48:找出...

    c语言经典案例

    实例029 哥德巴赫猜想 38 实例030 尼科彻斯定理 39 第4章 常用数据类型 41 实例031 数值型常量的使用 42 实例032 字符型变量的使用 42 实例033 求100~200之间的素数 43 实例034 利用#输出三角形 44 实例035 十进制...

    C程序范例宝典(基础代码详解)

    实例140 哥德巴赫猜想 208 实例141 四方定理 209 实例142 尼科彻斯定理 210 4.5 逻辑推理与判断 211 实例143 魔术师的秘密 211 实例144 婚礼上的谎言 212 实例145 谁讲了真话 213 实例146 黑纸与白纸...

    C语言入门实例

    在判断中一旦发现不是素数,则 isPrim被修改成0 int num;/*num:要判断的一个偶数*/ int num1; /*num表示为两个素数num1和num-num1之和*/ int count;/*计数输出个数,用于换行。*/ printf("输入要验证的...

    delphi 开发经验技巧宝典源码

    0067 如何实现哥德巴赫猜想 43 0068 如何实现韩信点兵 44 0069 求水仙花数的算法 44 0070 求1000以内的完数 45 0071 如何计算x的y次方 46 3.2 复杂计算类算法 46 0072 如何实现金额大小写转换的算法 ...

Global site tag (gtag.js) - Google Analytics