# Matura próbna informatyka 2022 grudzień (poziom rozszerzony) - zadanie 3.2

## Treść zadania:

Dla każdej liczby x z pliku `liczby.txt` sprawdź, czy liczba x – 1 jest liczbą pierwszą. Podaj, ile liczb z pliku `liczby.txt` po pomniejszeniu o 1 daje liczbę pierwszą.

Dla pliku `liczby_przyklad.txt` odpowiedzią jest 94.

## Rozwiązanie:

Na początku zdefiniujmy funkcję, która powie nam, czy dana funkcja jest liczbą pierwszą. [`Liczba pierwsza`](https://pl.wikipedia.org/wiki/Liczba_pierwsza) , jest liczbą naturalną większą od 1 oraz dzieli się przez 1 i samą siebie.

```python
def is_prime(n: int) -> bool:
    if n < 2:
        return False

    range_limit = int(sqrt(n)) + 1

    for i in range(2, range_limit):
        if n % i == 0:
            return False
    return True
```

Nie ma sensu szukać zatem liczby pierwszej w zbiorze liczb mniejszych od 2. Zakładam, że do funkcji zostanie podana tylko liczba naturalna. Szukanie dzielnika liczby można ograniczyć do zakresu [`pierwiastka kwadratowego`](https://pl.wikipedia.org/wiki/Liczba_pierwsza#Wyznaczanie) +1 - dla pewności :)

```python
with open("dane/liczby.txt", "r") as file:
    nums = [int(n) for n in file.readlines()]
```

Następnie otwieramy plik z danymi i każdy wiersz przekształcamy na `int`.

```python
total = 0

for num in nums:
    if is_prime(num - 1):
        total += 1

print(total)
```

Zostaje nam tylko zliczyć, ile liczb, od których zostało odjęte 1, jest liczbami pierwszymi!

## Cały program:

```python
from math import sqrt


def is_prime(n: int) -> bool:
    if n < 2:
        return False

    range_limit = int(sqrt(n)) + 1

    for i in range(2, range_limit):
        if n % i == 0:
            return False
    return True


with open("dane/liczby.txt", "r") as file:
    nums = [int(n) for n in file.readlines()]

total = 0

for num in nums:
    if is_prime(num - 1):
        total += 1

print(total)
```

## Wynik:

`21` liczb - uruchom program poniżej!

%[https://replit.com/@Onix95/32#3/3_2.py] 

Źródło arkusza: [https://arkusze.pl/matura-probna-informatyka-2022-grudzien-poziom-rozszerzony/](https://arkusze.pl/matura-probna-informatyka-2022-grudzien-poziom-rozszerzony/)
