Rozwiązanie
Zadanie 4.2 – matura 2019, czerwiec

Zadanie 4.2 (0-4)

Wybrane liczby
Wybrane liczby
Liczby pierwsze to liczby naturalne większe od 1, które mają dokładnie dwa dzielniki: jedynkę i samą siebie.
Dane są dwa pliki: liczby.txt i pierwsze.txt. Plik liczby.txt zawiera 300 wierszy. W każdym wierszu tego pliku znajduje się jedna liczba całkowita dodatnia z zakresu od 1 do 100 000.
Plik pierwsze.txt zawiera 200 wierszy. W każdym wierszu tego pliku znajduje się jedna liczba pierwsza z zakresu od 10 do 1 300 000.
Uwaga: pomocnicze pliki liczby_przyklad.txt i pierwsze_przyklad.txt, zawierają dane, które możesz wykorzystać, aby sprawdzić poprawność działania swojego(-ich) programu(-ów). Każdy z nich zawiera po 50 wierszy. W każdym wierszu znajduje się jedna liczba. Odpowiedzi dla danych z tych plików są podane pod treściami zadań.
Napisz program(-y), w wyniku działania którego(-ych) otrzymasz odpowiedzi do poniższych zadań. Pliki źródłowe z rozwiązaniem zapisz pod nazwą zgodną z numerem zadania, z rozszerzeniem odpowiadającym użytemu językowi programowania. Podaj, w kolejności ich występowania w pliku pierwsze.txt, wszystkie te liczby, które czytane od prawej do lewej również są liczbami pierwszymi. Odpowiedź zapisz w pliku wyniki4_2.txt.
Przykład:
Jeśli odczytamy liczbę pierwszą 17 od prawej do lewej, otrzymamy liczbę 71, która również jest liczbą pierwszą.
Dla pliku pierwsze_przyklad.txt liczbami spełniającymi warunek zadania są: 701, 709, 1033, 167, 1109, 1619, 1009, 179, 1499, 76001, 1601, 31873
Rozwiązanie zadań w Pythonie:
from math import sqrt

def is_prime(integer):
    for i in range(2, int(sqrt(integer)+1)):
        if integer % i == 0:
            return False
    return True

with open("MIN-R2A1P-193_dane/pierwsze.txt") as f:
    primes_lines = [line.strip() for line in f.readlines()]
    primes = [int(line) for line in primes_lines]

print("4.2")
reversed_primes = [int(line[::-1]) for line in primes_lines]
for num1, num2 in zip(primes, reversed_primes):
    if is_prime(num1) and is_prime(num2):
        print(num1)
Pobierz rozwiązanie
Wyszukaj więcej zadań z tego arkusza...