3.2 Liczby o jeden większe od pierwszych w pliku przykładowym
Matura próbna grudzień 2022 - Matura z informatyki: arkusze krok po kroku (Python)
Zadania 3.2-3.4: plik `liczby.txt` ma 100 liczb parzystych z zakresu [4, 1 000 000], a `liczby_przyklad.txt` tyle samo liczb z odpowiedziami w poleceniach. Sito liczy się raz, do największej liczby z pliku, a sprawdzenie pierwszości to odczyt `is_prime[x]`. Zadanie 3.2 (2 pkt): ile liczb \( x \) z pliku daje liczbę pierwszą \( x - 1 \). Dla pliku przykładowego: 94.
def sieve(n):
is_prime = [True] * (n + 1) # indeks = liczba
is_prime[0] = is_prime[1] = False
i = 2
while i * i <= n: # wystarczy do pierwiastka: mniejsze wielokrotności skreśliły mniejsze i
if is_prime[i]:
j = i * i # mniejsze wielokrotności i są już skreślone
while j <= n:
is_prime[j] = False
j = j + i
i = i + 1
return is_prime
with open("liczby_przyklad.txt") as f:
numbers = [int(line) for line in f] # liczby parzyste z [4, 1 000 000]
is_prime = sieve(max(numbers))
# 3.2 x - 1 pierwsza: odczyt z tablicy sita zamiast sprawdzania dzielników
before_prime = sum(1 for x in numbers if is_prime[x - 1])
print("3.2", before_prime)Ładowanie interaktywnego edytora... Jeśli się nie pojawi, włącz JavaScript.
Wszystkie lekcje kursu Matura z informatyki: arkusze krok po kroku·Zaloguj się, aby zapisać postęp na koncie.