Tub sonlarni chiqaring
Agar 1
dan kattaroq butun son, 1
va o’zidan tashqari boshqa sonlarga qoldiqsiz bo’linmasa, u son tub deb nomlanadi.
Boshqacha qilib aytganda, n > 1
tub son hisoblanadi, agar uni 1
va n
dan boshqa hech narsa bilan teng taqsimlash mumkin bo’lmasa.
Masalan, 5
tub son hisoblanadi, chunki uni 2
, 3
va 4
bilan qoldiqsiz bo’lish mumkin emas.
2
dan n
gacha bo`lgan oraliqda tub sonlarni chiqaradigan kodni yozing.
n = 10
uchun natija 2,3,5,7
bo’ladi.
P.S. Kod har qanday n
uchun ishlashi kerak, har qanday belgilangan qiymat uchun sozlanmagan bo’lishi kerak.
Ushbu vazifani bajarish uchun ko’plab algoritmlar mavjud.
Ichki tsikldan foydalanamiz:
For each i in the interval {
check if i has a divisor from 1..i
if yes => the value is not a prime
if no => the value is a prime, show it
}
Yorliqdan foydalangan holda kod:
let n = 10;
nextPrime: for (let i = 2; i <= n; i++) {
// har bir i uchun...
for (let j = 2; j < i; j++) {
// bo'luvchi izlang...
if (i % j == 0) continue nextPrime; // bosh son emas, keyingi bosqichga o'ting
}
alert(i); // bosh son
}
Uni optimallashtirish uchun juda ko’p yo’li mavjud. Masalan, biz 2
dan i
ning kvadrat ildizigacha bo’linmalarni qidirishimiz mumkin. Ammo baribir, agar biz katta vaqt oralig’ida haqiqatan ham samarali bo’lishni istasak, biz yondashuvni o’zgartirib, Kvadratik elak kabi rivojlangan matematikaga va murakkab algoritmlarga tayanishimiz kerak, Umumiy raqamli maydonchadan tayyorlangan elak va boshqalar.