质数(prime number)又称素数,有无限个。一个大于1的自然数,除了1和它本身外,不能被其他自然数整除,换句话说就是该数除了1和它本身以外不再有其他的因数;否则称为合数。
判断一个数是否是质数:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>判断一个数是否是质数</title>
</head>
<body>
<script>
var num = prompt("请输入一个整数:");
if(num <= 1) {
alert("该值不合法!");
} else {
var flag = true;
for(var i = 2; i < num; i++) {
if(num % i == 0) {
flag = false;
}
}
if(flag) {
alert(num + "是质数!");
}else{
alert(num + "不是质数!");
}
}
</script>
</body>
</html>
打印1-100之间的质数:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>打印1-100之间的质数</title>
</head>
<body>
<script>
for(var i=2;i<=100;i++){
var flag=true;
for(var j=2;j<i;j++){
if(i%j==0){
flag=false;
}
}
if(flag){
console.log(i);
}
}
</script>
</body>
</html>
打印1-100之间的质数的优化改进:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>打印1-100之间的质数</title>
</head>
<body>
<script>
//console.time("计时器名字")可打开一个计时器,可用计时器查看代码性能
console.time("test");
for(var i=2;i<=100;i++){
var flag=true;
//Math.sqrt(i)求开方,判断到这就可,后面的值是重复的
for(var j=2;j<=Math.sqrt(i);j++){
if(i%j==0){
flag=false,不是质数
flag=false;
//只要一个i能%j,就证明不是质数,后面其他不用判断
break;
}
}
//flag=true,是质数
if(flag){
//打印需要花费大量时间
console.log(i);
}
}
//关闭计时器
console.timeEnd("test");
</script>
</body>
</html>