let x = 97 // 可以修改成其他數值來測試
//flag標記
let isNotPrime = false //先判斷是不是質數
for (let i = 2; i <= x - 1; i = i++) {
if (x % i === 0) {
isNotPrime = true
break // 如果找到能整除的因數,直接結束迴圈
}
}
if (isNotPrime) {
console.log(`${x}不是質數`)
} else {
console.log(`${x}是質數`)
}
說明:
為什麼要用 i <= x - 1
的判斷條件是因為:
i <= x - 1
改成開根號的寫法let x = 23 // 可以修改成其他數值來測試
//flag標記
let isNotPrime = false //先判斷是不是質數
for (let i = 2; i <= Math.sqrt(x); i++) {
if (x % i === 0) {
isNotPrime = true
break // 如果找到能整除的因數,直接結束迴圈
}
}
if (isNotPrime) {
console.log(`${x}不是質數`)
} else {
console.log(`${x}是質數`)
}
說明:
為什麼要改成開根號的寫法是因為:
Math.sqrt(x)
會計算 x
的平方根。x
的平方根,減少了要依序驗證的範圍,也提高了判斷質數的效率。let x = 67
// flag標記
let isNotPrime = false //先判斷是不是質數
let i =2 // 起始值
while (i <= x - 1) {
if (x % i === 0) {
isNotPrime = true
break //運算效率會比別人快
}
i++ // 等同於 for 迴圈中的 i++
}
if (isNotPrime) {
console.log(`${x}不是質數`)
} else {
console.log(`${x}是質數`)
}