# Matura informatyka 2022 czerwiec (poziom rozszerzony) - zadanie 4.3

## **Treść zadania:**

Wypisz wszystkie liczby pierwsze z pliku `liczby.txt`, których odbicia również są liczbami pierwszymi, każdą w oddzielnym wierszu.

Dla pliku `przyklad.txt` odpowiedź to:

13

131

(odbiciem liczby 13 jest 31 – obie są liczbami pierwszymi, odbiciem 131 jest 131)

## **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 :)

  
Następnie dla każdej odczytanej liczby sprawdzamy, czy jest ona i jej odbicie liczbą pierwszą - jeśli tak - wypisujemy ją :)

```python

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

for num in nums:
    reflection = int(str(num)[::-1])
    if is_prime(num) and is_prime(reflection):
        print(num)
```

## 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 f:
    nums = [int(num) for num in f.readlines()]

for num in nums:
    reflection = int(str(num)[::-1])
    if is_prime(num) and is_prime(reflection):
        print(num)
```

%[https://replit.com/@Onix95/43#4/4_3.py] 

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