3054 - PrimeXXL

From Bitnami 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

<syntaxhighlight lang="python" line> 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()


</syntaxhighlight>