💡 İpucu 2: [0, 1] ile başla, döngüde fib[-1]+fib[-2] ekle.
💡 İpucu 3: while len(fib) < n: fib.append(fib[-1]+fib[-2])
Yaklaşım & Açıklama
Asal sayı kontrolü, matematik tabanlı algoritma sorularının temelidir.
**Naive yaklaşım:**
```python
def is_prime(n):
if n < 2: return False
for i in range(2, int(n**0.5) + 1):
if n % i == 0:
return False
return True
```
**Neden √n'e kadar?** Eğer n = a*b ise, en az bir çarpan √n'den küçük olmalı.
**Optimizasyon:**
- 2'den sonra sadece tek sayıları dene: `range(3, int(n**0.5) + 1, 2)`
- 6k±1 optimizasyonu: tüm asallar 6k±1 formunda.
**Eratosthenes eleği** — çok sayıda asal kontrolü için:
```python
def sieve(n):
primes = [True] * (n + 1)
primes[0] = primes[1] = False
for i in range(2, int(n**0.5) + 1):
if primes[i]:
for j in range(i*i, n + 1, i):
primes[j] = False
return [i for i, p in enumerate(primes) if p]
```
**Kullanım:** Kriptografi (RSA), sayı teorisi, hash fonksiyonları.