.mainTB td
我們提供的服務(wù)有:網(wǎng)站制作、成都網(wǎng)站設(shè)計(jì)、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、鄒城ssl等。為千余家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的鄒城網(wǎng)站制作公司
{
text-align:right;
width:50px;
}
function generate() {
var tb = document.getElementById("tb");
var row;
var cell;
var n = 0;//當(dāng)前列下標(biāo)
var count;//整除數(shù)量
for (var i = 1; i 101; i++) {
count = 0;
for (var j = 1; j = i; j++) {//運(yùn)算
if (i % j == 0) {
count++;
if (count 2) {
break;
}
}
}
if (count == 2) { //判斷質(zhì)數(shù)
if (n == 0) { //新行
row = tb.insertRow(tb.rows.length);
}
cell = row.insertCell(n);
cell.innerHTML = i;
if (++n == 6) { //跳列
n = 0;
}
}
}
}
input type="button" value="計(jì)算" onclick="generate()"/
table id="tb" class="mainTB"
/table
以下代碼可以實(shí)現(xiàn)JavaScript求n個(gè)素?cái)?shù),當(dāng)n=500時(shí)滿足題目需求。
function?prime(n){
var?primeArr?=?[2];
var?isPrime?=?function(num,?primeList){
if(num?==?2){
return?true;
}
for(var?i?=?3,?iLen?=?Math.sqrt(num),?j?=?1;?i?=?iLen;?i?=?primeList[j++]){
if(num?%?i?==?0){
return?false;
}
}
return?true;
}
if(isNaN(n)?||?n??1){
return?[];
}
for(var?i?=?3,??i??n;?i?+=?2){
if(isPrime(i,?primeArr)){
primeArr.push(i);
}
}
return?primeArr;
}
prime(100)
//函數(shù)調(diào)用
prime(100);//計(jì)算100以內(nèi)的素?cái)?shù):
素?cái)?shù)即除去1和其本身兩個(gè)數(shù)之外,不能被任何數(shù)整除的整數(shù)。
由公理可知,如果一個(gè)整數(shù)能被分解成多個(gè)整數(shù),則必有一個(gè)數(shù)不大于該整數(shù)的平方根(反證法可知,如果分解成的兩個(gè)數(shù)都大于平方根,則乘積必大于原數(shù)),故在循環(huán)時(shí),只需循環(huán)到該數(shù)的平方根即(Math.sqrt(num)為求平方根)
如果一個(gè)數(shù)能被2整除,則除2之外其他數(shù)都不是素?cái)?shù),故從3開始遍歷能夠減少循環(huán)次數(shù)
如果一個(gè)數(shù)能夠被分解,則最終分解結(jié)果必然為多個(gè)素?cái)?shù)之積,故循環(huán)時(shí)只需要嘗試之前算好的素?cái)?shù)能否整除當(dāng)前的數(shù),極大減少循環(huán)次數(shù)
for(let i=1;i=100;i++){
if(check(i)) {
console.log(i)
}
}
// 判斷當(dāng)前給定的數(shù) num 是否為素?cái)?shù), 是素?cái)?shù)返回 true, 否則返回 false
function check(num){
if(num === 1) {
// 1 不是素?cái)?shù)也不是合數(shù), 返回 false
return false
} else {
// 聲明變量用于統(tǒng)計(jì)從1~根號(hào)下 num,之間 能被 num 整除的數(shù)的個(gè)數(shù)
let count = 0;
for(let i=1; i=Math.sqrt(num); i++) {
if(num%i === 0) {
count++
// 當(dāng)發(fā)現(xiàn)在1~根號(hào)下 num 之間有超過1個(gè)數(shù)可以被 num 整除, 說明 num 一定不是素?cái)?shù),直接返回false, 后面的數(shù)不用判斷了
if(count 1) {
return false
}
}
}
// 因?yàn)樗財(cái)?shù)只能被1和自身整除,
// 那么從1~根號(hào)下 num 之間一定只有一個(gè)數(shù)(1)可以被 num 整除, 所以當(dāng) count 等于1時(shí), 這個(gè)num 就是素?cái)?shù)
return count == 1
}
return false
}
var?arr?=?[];
for(var?i?=?2;?i??100;?i++){
var?yes?=?true;
for(var?j?=?2;?j?=?i?/?2;?j++){
if(i?%?j?==?0){
yes?=?false;
break;
}
}
if(yes){
arr.push(i);
}
}
console.log(arr);