3054 - PrimeXXL

De la Universitas MediaWiki

Cerinţa

Se dă un număr natural n. Să se afișeze DA dacă numărul este prim altfel se afișează NU.

Date de intrare

Fișierul de intrare primexxlin.txt conține pe prima linie numărul n.

Date de ieșire

Fișierul de ieșire primexxlout.txt va conține pe prima linie DA sau NU după caz.

Restricţii şi precizări

  • 1 ≤ nrcif(n) ≤ 1000

Exemplu 1

primexxlin.txt
5
primexxlout.txt
Datele de intrare corespund restrictiilor impuse
DA


Exemplu 2

primexxlin.txt
10000000001000000000100000000010000000001000000000100000000010000000001000000000100000000010000000001000000000100000000010000000001000000000100000000010000000001000000000100000000010000000001000000000100000000010000000001000000000100000000010000000001000000000100000000010000000001000000000100000000010000000001000000000100000000010000000001000000000100000000010000000001000000000100000000010000000001000000000100000000010000000001000000000100000000010000000001000000000100000000010000000001000000000100000000010000000001000000000100000000010000000001000000000100000000010000000001000000000100000000010000000001000000000100000000010000000001000000000100000000010000000001000000000100000000010000000001000000000100000000010000000001000000000100000000010000000001000000000100000000010000000001000000000100000000010000000001000000000100000000010000000001000000000100000000010000000001000000000100000000010000000001000000000100000000010000000001000000000100000000010000000001000000000100000000010000000001
primexxlout.txt
Datele de intrare nu corespund restrictiilor impuse


Rezolvare

def is_prime(n):
    # Funcția verifică dacă un număr este prim.

    if n < 2:
        return False
    if n == 2:
        return True
    if n % 2 == 0:
        return False
    p = 3
    while p * p <= n:
        if n % p == 0:
            return False
        p += 2
    return True


def main():
    with open('primexxlin.txt', 'r') as fin, open('primexxlout.txt', 'w') as fout:
        n = int(fin.readline().strip())

        # Verificăm dacă numărul respectă restricțiile
        if len(str(n)) > 1000:
            fout.write("Datele de intrare nu corespund restrictiilor impuse\n")
            return

        fout.write("Datele de intrare corespund restrictiilor impuse\n")

        # Verificăm dacă numărul este prim și scriem rezultatul în fișierul de ieșire
        fout.write('DA\n' if is_prime(n) else 'NU\n')


if __name__ == "__main__":
    main()