㈠什么是质数?
质数又称素数。一个大于1的自然数,除了1和它自身外,不能被其他自然数整除的数叫做质数;否则称为合数。
㈡质数的性质
⑴质数p的约数只有两个:1和p。
⑵初等数学基本定理:任一大于1的自然数,要么本身是质数,要么可以分解为几个质数之积,且这种分解是唯一的。
⑶质数的个数是无限的。
⑷质数的个数公式
是不减函数。
![](https://gss1.bdstatic.com/-vo3dSag_xI4khGkpoWK1HF6hhy/baike/pic/item/d6ca7bcb0a46f21f3b5fd72bf5246b600c33ae5b.jpg)
⑸若n为正整数,在
到
之间至少有一个质数。
![](https://gss1.bdstatic.com/-vo3dSag_xI4khGkpoWK1HF6hhy/baike/pic/item/80cb39dbb6fd5266cdc6b56ca818972bd50736dc.jpg)
![](https://gss2.bdstatic.com/9fo3dSag_xI4khGkpoWK1HF6hhy/baike/pic/item/c83d70cf3bc79f3dfa786d48b9a1cd11728b2928.jpg)
⑹若n为大于或等于2的正整数,在n到
之间至少有一个质数。
![](https://gss2.bdstatic.com/9fo3dSag_xI4khGkpoWK1HF6hhy/baike/pic/item/a8773912b31bb051b2763b50357adab44aede07c.jpg)
⑺若质数p为不超过n(
)的最大质数,则
。
![](https://gss3.bdstatic.com/-Po3dSag_xI4khGkpoWK1HF6hhy/baike/pic/item/a2cc7cd98d1001e982b69c77bb0e7bec55e797c4.jpg)
![](https://gss2.bdstatic.com/-fo3dSag_xI4khGkpoWK1HF6hhy/baike/pic/item/7a899e510fb30f24648f677bcb95d143ad4b03b4.jpg)
⑻所有大于10的质数中,个位数只有1,3,7,9。
㈢用JavaScript编写质数
function isPrime(n) {
if (n <= 3) { return n > 1; }
if (n % 2 == 0 || n % 3 == 0) { return false; }
for (var i = 5; i * i <= n; i += 6) {
if (n % i == 0 || n % (i + 2) == 0) { return false; }
}
return true;
}
㈣哥德巴赫猜想
⑴1742年,哥德巴赫给欧拉的信中提出了以下猜想:任一大于2的整数都可写成三个质数之和。
⑵哥德巴赫猜想证明的困难在于,任何能找到的素数,在以下式中都是不成立的。2*3*5*7*。。。。。。*PN*P=PN+(2*3*5*7*。。。。。。*P-1)*PN前面的偶数减去任何一个素数PN的差必是合数.
⑶下面是有关哥德巴赫猜想的验证:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>哥德巴赫猜想验证</title>
</head>
<body>
<h1>哥德巴赫猜想验证</h1>
<input id="sr">
<input type="submit" onclick="tj()">
<script type="text/javascript">
function tj(){
var abc=parseInt(document.getElementById("sr").value);
var x;
var i;
for(i=2;i<abc/2;i++){
if (sspd(i)&&sspd(abc-i)){
x=abc-i;
document.write(abc+"="+i+"+"+x+"<br>");
}
}
//素数判断函数sspd
function sspd(s){
for(k=2;k<=Math.sqrt(s);k++){
if (s%k==0 )return 0;
}
return 1;
}
}
</script>
</body>
</html>
㈤质数练习
⑴问题:在页面中接收一个用户输入的数字,并判断该数是否是质数。
⑵注:质数:只能被1和它自身整除的数,1不是质数也不是合数,质数必须是大于1的自然数。
⑶代码如下:
//创建一个变量来保存当前的数的状态
//默认当前num是质数
var flag = true;
//判断num是否是质数
//判断2-num之间的数
for(var i=2 ; i < num ; i++){
//console.log(i);
//判断num是否能被i整除
if(num % i == 0){
//如果num能被i整除,则说明num一定不是质数
//设置flag = false;
}
}
//如果num是质数则输出
if(flag){
alert(num + "是质数!!!");
}else{
alert("这不是质数。");
}
}