3. Całe zadanie: potęgi modulo w wyniki3.txt

Matura pokazowa marzec 2022 - Matura z informatyki: arkusze krok po kroku (Python)

Pełne rozwiązanie zadań 3.3-3.5 jednym programem na pliku `liczby.txt`.

rows = []
with open("liczby.txt") as f:
    for line in f:
        M, a, b = map(int, line.split())
        rows.append((M, a, b))

# 3.3 liczba pierwsza: większa od 1 i bez dzielnika od 2 do pierwiastka
def is_prime(n):
    if n < 2:
        return False
    d = 2
    while d * d <= n:
        if n % d == 0:
            return False
        d = d + 1
    return True


primes = 0
for M, a, b in rows:
    if is_prime(M):
        primes = primes + 1

# 3.4 algorytm Euklidesa: względnie pierwsze, gdy NWD = 1
def gcd(p, q):
    while q > 0:
        p, q = q, p % q
    return p


coprime = 0
for M, a, b in rows:
    if gcd(M, a) == 1:
        coprime = coprime + 1

# 3.5 kolejne potęgi a^0, a^1, ..., a^(M-1) modulo M: każda z poprzedniej jednym mnożeniem
solvable = 0
for M, a, b in rows:
    value = 1 % M  # a^0 mod M
    for x in range(M):
        if value == b:
            solvable = solvable + 1
            break
        value = value * a % M

with open("wyniki3.txt", "w", encoding="utf-8") as out:
    print("3.3", primes, file=out)
    print("3.4", coprime, file=out)
    print("3.5", solvable, 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.