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.