Mô tả bài toán
Viết hàm tính tổng các chữ số của một số, sau đó tìm số nguyên tố nhỏ nhất lớn hơn hoặc bằng tổng đó.
Ví dụ minh họa
const num = 56563;
const digitSum = (num, sum = 0) => {
if (num) {
return digitSum(Math.floor(num / 10), sum + (num % 10));
}
return sum;
};
const isPrime = n => {
if (n === 1) return false;
if (n === 2) return true;
for (let x = 2; x < n; x++) {
if (n % x === 0) return false;
}
return true;
};
const nearestPrime = num => {
let sum = digitSum(num);
while (!isPrime(sum)) sum++;
return sum;
};
console.log(nearestPrime(num));
Kết quả
29
Tối ưu hóa kiểm tra số nguyên tố
Chỉ cần kiểm tra đến √n:
const isPrime = n => {
if (n < 2) return false;
for (let i = 2; i * i <= n; i++) {
if (n % i === 0) return false;
}
return true;
};
Ứng dụng
Kết hợp xử lý số học và lý thuyết số, thường gặp trong thuật toán mã hóa/băm.