3. Całe zadanie: liczby czterocyfrowe w wyniki3.txt

Matura próbna grudzień 2024 - Matura z informatyki: arkusze krok po kroku (Python)

Pełne rozwiązanie zadań 3.1-3.3 jednym programem na pliku `liczby.txt`, z odpowiedziami w jednym pliku `wyniki3.txt`.

with open("liczby.txt") as f:
    numbers = [int(line) for line in f]

# 3.1 kwadraty: isqrt to całkowity pierwiastek (bez błędów zaokrągleń liczb zmiennoprzecinkowych)
from math import isqrt

squares = [x for x in numbers if isqrt(x) ** 2 == x]

# 3.2 liczba różnych dzielników pierwszych: rozkład na czynniki, każdy dzielnik liczony raz
def prime_divisors(n):
    count = 0
    d = 2
    while d * d <= n:
        if n % d == 0:
            count = count + 1
            while n % d == 0:  # usuwa wszystkie wystąpienia dzielnika d
                n = n // d
        d = d + 1
    if n > 1:  # została jedna liczba pierwsza większa niż pierwiastek
        count = count + 1
    return count


many = [x for x in numbers if prime_divisors(x) >= 5]

# 3.3 cyfry posortowane: rosnąco = najmniejsza liczba (zera z przodu), malejąco = największa
def difference(n):
    digits = sorted(str(n))
    smallest = int("".join(digits))
    largest = int("".join(reversed(digits)))
    return largest - smallest


smaller = sum(1 for x in numbers if difference(x) < x)
larger = sum(1 for x in numbers if difference(x) > x)
equal = [x for x in numbers if difference(x) == x]

with open("wyniki3.txt", "w", encoding="utf-8") as out:
    print("3.1", len(squares), squares[0], file=out)
    print("3.2", *many, file=out)
    print("3.3", smaller, larger, file=out)
    print("równe:", *equal, file=out)

print(open("wyniki3.txt", encoding="utf-8").read())

Ł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.