3054 - PrimeXXL

De la Universitas MediaWiki
Versiunea din 3 ianuarie 2024 16:04, autor: Codrut Borcutean (discuție | contribuții) (Pagină nouă: == 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...)
(dif) ← Versiunea anterioară | Versiunea curentă (dif) | Versiunea următoare → (dif)

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()