Sito na planszy

Liczby pierwsze: sprawdzanie dzielników do pierwiastka - Informatyka - liceum klasa 1, zakres rozszerzony (Python)

Sito najlepiej widać na rysunku. Liczby od 1 do 100 to pola siatki 10 × 10 (pierwszy wiersz u góry: 1-10). Strzałka obrysowuje pole każdej liczby pierwszej na **zielono**, a pole liczby złożonej (i jedynki) **przekreśla** na czerwono. Popatrz na wzór: wielokrotności 2, 5 i 10 tworzą całe kolumny, a liczby pierwsze (poza 2 i 5) leżą tylko w kolumnach liczb kończących się na 1, 3, 7 i 9.

arrow = Sprite()
arrow.image = 16
arrow.size = 10
world.add(arrow)
def cell(k):
    col = (k - 1) % 10
    row = (k - 1) // 10
    return -95 + 19 * col, 76 - 19 * row

def jump(x, y):
    arrow.pen.on = False
    arrow.position = (x, y)
    arrow.angle = 0
    arrow.pen.on = True

def square(x, y, side):
    jump(x, y)
    for _ in range(4):
        arrow.move(side)
        arrow.turn(90)

def cross(x, y, side):
    jump(x, y)
    arrow.position = (x + side, y + side)

def sieve(n):
    is_prime = [True] * (n + 1)
    is_prime[0] = is_prime[1] = False
    i = 2
    while i * i <= n:
        if is_prime[i]:
            for j in range(i * i, n + 1, i):
                is_prime[j] = False
        i += 1
    return is_prime

is_prime = sieve(100)
for k in range(1, 101):
    x, y = cell(k)
    if is_prime[k]:
        arrow.pen.color = (22, 163, 74)
        square(x, y, 14)
    else:
        arrow.pen.color = (220, 38, 38)
        cross(x, y, 14)

Ładowanie interaktywnego edytora... Jeśli się nie pojawi, włącz JavaScript.

Wszystkie lekcje kursu Informatyka - liceum klasa 1, zakres rozszerzony·Zaloguj się, aby zapisać postęp na koncie.