Số bán nguyên tố (semiprime) là hợp số là tích của 2 số nguyên tố (có thể trùng: 4=2×2, 9=3×3).
Ví dụ: 6, 10, 15, 77, 4, 9, 25...
Giải pháp
Mã triển khai (phân tích thừa số nguyên tố, đếm số thừa số):
const num = 141;
const checkSemiprime = num => {
let cnt = 0;
for (let i = 2; cnt < 2 && i * i <= num; ++i) {
while (num % i === 0) {
num /= i;
++cnt;
}
}
if (num > 1) ++cnt; // Thừa số nguyên tố lớn còn lại
return cnt === 2;
};
console.log(checkSemiprime(num));
Kết quả
Đầu ra trong console:
true
Giải thích: 141 = 3 × 47 (cả 2 đều nguyên tố) → semiprime.