Quantcast
Viewing latest article 1
Browse Latest Browse All 28

Answer by РомаТютин for Sieve of Eratosthenes - Finding Primes Python

import mathdef atkin_sieve(limit):   primes = [False] * (limit + 1)   square_limit = int(math.sqrt(limit))# Отметитьвсечисла, делящиесянацелона 2, 3 или 5for i in range(1, square_limit + 1):    for j in range(1, square_limit + 1):        num = 4 * i**2 + j**2        if num <= limit and (num % 12 == 1 or num % 12 == 5):            primes[num] = not primes[num]        num = 3 * i**2 + j**2        if num <= limit and num % 12 == 7:            primes[num] = not primes[num]        num = 3 * i**2 - j**2        if i > j and num <= limit and num % 12 == 11:            primes[num] = not primes[num]# Удалитькратныеквадратампростыхчиселfor i in range(5, square_limit):    if primes[i]:        for j in range(i**2, limit + 1, i**2):            primes[j] = False# Вернутьсписокпростыхчиселreturn [2, 3] + [i for i in range(5, limit) if primes[i]]# Примериспользованияprint(atkin_sieve(100))

Viewing latest article 1
Browse Latest Browse All 28

Trending Articles