欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

javascript1到100素數

趙潔冰1年前6瀏覽0評論

JavaScript作為一門廣泛應用于前端開發的語言,其功能之豐富,令人嘆為觀止。今天,我想重點聊一聊JS中的素數,因為素數一直是一個有趣而又古老的領域,其特殊的性質令其成為了無窮無盡的學術話題。那么,JS如何尋找1到100中的素數呢?

首先,我們需要了解素數的定義:一個大于1的自然數,除了1和它自身外,不能被其他自然數整除的數。

function isPrime(num) {
for (let i = 2; i < num; i++) {
if (num % i === 0) {
return false;
}
}
return true;
}

這段代碼的作用是判斷一個數是否為素數。我們通過遍歷2到num之間的所有數,判斷num是否可以被這些數整除,如果可以被整除,則它不是素數,返回false;否則繼續遍歷完所有數,它就是素數,返回true。

接下來,我們可以使用這個函數找出1到100中的素數:

for (let i = 2; i <= 100; i++) {
if (isPrime(i)) {
console.log(i);
}
}

通過遍歷2到100之間的所有數,對每個數調用isPrime函數,如果返回true,則該數是素數,輸出到控制臺。

但是,以上方法雖然簡單易懂,但它有一個嚴重的問題:時間復雜度太高。在判斷一個數n是否為素數時,我們需要遍歷2到n之間的所有數,計算次數為n-2次。而當n的范圍很大時,這個計算量就會變得非常大。

于是,我們需要實現一種更高效的方法。在目前算法領域中,有一種高效的素數判斷方法:埃氏篩法。這種方法的基本思路是,使用一個數組記錄當前數字是否為素數,然后將其倍數全部標記為非素數。這樣,就能夠有效減少計算次數。

function findPrimes(max) {
const primes = new Array(max + 1).fill(true);
primes[0] = false;
primes[1] = false;
for (let i = 2; i * i <= max; i++) {
if (primes[i]) {
for (let j = i * i; j <= max; j += i) {
primes[j] = false;
}
}
}
const result = [];
for (let i = 2; i <= max; i++) {
if (primes[i]) {
result.push(i);
}
}
return result;
}

首先,我們建立一個max+1的數組,填充true,表示所有數都是素數。把0和1標記為false,因為它們不是素數。然后,遍歷2到根號max之間的每個數i,如果i為素數,那么把i的倍數j都標記為false。最后,遍歷整個數組,將是素數的數加入結果數組中。

我們使用這個函數來找出1到100中的素數:

console.log(findPrimes(100));

運行結果為[2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]。

以上就是JS尋找1到100中素數的兩種方法。對于小范圍內的計算,簡單的遍歷與判斷就可以滿足需求,而對于大范圍的計算,則需要使用更高效的算法。JavaScript中的算法知識博大精深,可以說是無窮無盡,大家可以嘗試著去深入探究。