<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>素数</title>
<script>
//方法1
let data1 = +new Date();
let a = 0;
let arr = [];
for (i = 2; i < 100; i++) {
let k = 0;
for (j = 2; j <= Math.sqrt(i); j += 1) {
if (i % j == 0 && i !== j) {
k++;
// 因为素数的因数只有1和它本身,故k值为1就是素数
}
a++;
if (i < j || k > 1) {
break;
}
}
if (k == 0) {
// document.write(i + ", ");
arr.push(i);
}
}
let sum1 = arr.reduce((last, item) => {
return last + item
}, 0)
let data2 = +new Date();
console.log(a, sum1, arr, '=======');
//方法2
var sum = 0;
let b = 0;
let arr2 = [2];
for (var i = 3; i <= 100; i += 2) {
let m = 1;
for (var j = 2; j <= Math.sqrt(i); j += 1) {
b++;
if (i % j == 0) {
m = 0;
break;
}
}
if (m == 1) {
arr2.push(i);
sum += i;
}
}
let data3 = +new Date();
console.log(b, sum, arr2, '-----');
// 方法3
function isZishu() {
let data4 = +new Date();
let arr1 = [2];
let arr2 = [];
let c = 0;
for (i = 3; i < 100; i += 2) {
let k = 0;
for (j = 2; j <= Math.sqrt(i); j += 1) {
c++;
if (i % j == 0) {
if (i != j) {
k++;
break;
}
}
}
if (k == 0) {
// document.write(i + ", ");
arr1.push(i);
arr2.push(i + 1)
} else {
arr2.push(i - 1)
arr2.push(i)
arr2.push(i + 1)
}
}
console.log(c, arr1, 'arr1');
console.log(Array.from(new Set(arr2)), 'arr2');
let data5 = +new Date();
console.log(data2 - data1, data3 - data2);
console.log(data5 - data4);
}
isZishu();
</script>
</head>
<body>
</body>
</html>
求素数两种方法方法2,3一样3求出了合数
于 2022-03-30 23:34:18 首次发布