🔢Algoritma Örnekleri
🎈 Asal Sayı Hesaplama (Prime)
def is_prime(number):
if number < 2:
return False
for i in range(2, number):
if number % i == 0:
return False
return Trueimport math
def is_prime_fast(number):
if number < 2:
return False
root = round(math.sqrt(number))
for i in range(2, root + 1):
if number % i == 0:
return False
return True🔢 Mersenne Number
def mersenne_number(p):
return 2 ** p - 1
def is_prime(number):
if number < 2:
return False
for i in range(2, number):
if number % i == 0:
return False
return True
def get_primes(n_start, n_end):
return [x for x in range(n_start, n_end + 1) if is_prime(x)]
mersennes = [mersenne_number(x) for x in get_primes(3, 65)]🪁 Lucas Lehmer
def lucas_lehmer(p):
n = [4]
limit = p - 2
mersenne = mersenne_number(p)
for i in range(1, limit + 1):
n.append((n[i - 1] ** 2 - 2) % mersenne)
return n
ll_result = lucas_lehmer(17)🔢 Mersenne Prime
def ll_prime(p):
ll = lucas_lehmer(p)
return not bool(ll[-1])
mersenne_primes = [(x, int(ll_prime(x))) for x in get_primes(3, 65)]💯 Sieve of Eratosthenes
def list_true(n):
return [False] * (2) + [True] * (n - 1)
# Test
# assert len(list_true(20)) == 21
# assert list_true(20)[0] is False
# assert list_true(20)[1] is False
def mark_false(bool_list, p):
limit = ((len(bool_list) -1) // p) + 1
for i in range(2, limit):
bool_list[i*p] = False
return bool_list
# Test
# assert mark_false(list_true(6), 2) == [False, False, True,
# True, False, True, False]
def find_next(bool_list, p):
for i in range(p + 1, len(bool_list)):
if bool_list[i]:
return i
# Test
# assert find_next([True, True, True, True], 2) == 3
# assert find_next([True, True, True, False], 2) is None
def prime_from_list(bool_list):
return [i for i, x in enumerate(bool_list) if x]
# Test
# assert prime_from_list([False, False, True, True, False]) == [2, 3]
def sieve(n):
bool_list = list_true(n)
p = 2
while p is not None:
bool_list = mark_false(bool_list, p)
p = find_next(bool_list, p)
return prime_from_list(bool_list)
assert sieve(1000) == get_primes(0, 1000)
# Hız testleri
# %%timeit ile hesaplanmıştır (jupyter notebook)
sieve(1000)
get_primes(0, 1000)
# 402 µs ± 7.47 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
# 4.9 ms ± 93.2 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)👨💻 Code Snippets
📂 Yüksek Miktarda Veriyi Ele Alma
Previousaiohttp.ClientSession() içerisideki params, data ve json ne işe yararNextAmazon AWS ve Azure için Şirketinize veya Vergi Numaranıza Fatura Kesmek
Last updated
Was this helpful?