1345 - K Prim

From Bitnami MediaWiki

Cerinţa[edit | edit source]

Să se scrie un program care citește un număr natural k și afișează cel mai mic număr natural n mai mare decât 1, care nu este divizibil cu primele k numere prime și nu este prim. Fișierul de intrare kprim.in conține pe prima linie numărul k.

Date de ieşire[edit | edit source]

Fișierul de ieșire kprim.out va conține pe prima linie numărul n, reprezentând cel mai mic număr natural n,care nu este divizibil cu primele k numere prime și nu este prim.

Restricții și precizări[edit | edit source]

  • 1 ≤ k ≤ 10000

Exemplu[edit | edit source]

kprim.in
3
kprim.out
49

Explicație[edit | edit source]

Primele 3 numere prime sunt 2, 3, 5. Numerele care nu sunt divizibile cu 2, 3 sau 5 sunt : 7, 11, 13, 17, 19, 23, 31, 37, 41, 47, 49, … 49 este cel mai mic număr care nu este prim

Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line> import math

def validare_date(n):

   if isinstance(n, int) and n > 0:
       return True
   return False

def prim(n):

   if n == 0 or n == 1:
       return False
   if n == 2:
       return True
   if n % 2 == 0:
       return False
   for i in range(3, int(math.sqrt(n))+1, 2):
       if n % i == 0:
           return False
   return True

if __name__ == '__main__':

   n = int(input("Introduceti un numar natural: "))
   if validare_date(n):
       if n == 1:
           print(9)
       else:
           x = 3
           while n > 0:
               if prim(x):
                   r = x
                   n -= 1
               x += 1
           p = r * r
           print(p)
   else:
       print("\nDatele de intrare nu corespund restrictiilor impuse.")


</syntaxhighlight>

Explicație rezolvare[edit | edit source]

Acest program calculează pătratul celui de-al n-lea număr prim, unde n este un număr natural citit de la tastatură. Înainte de a începe calculele, programul verifică dacă datele de intrare sunt valide, adică dacă n este un număr natural pozitiv. Dacă datele sunt invalide, programul va afișa un mesaj corespunzător. Dacă datele sunt valide și n este egal cu 1, programul va afișa numărul 9. În caz contrar, programul va căuta cel de-al n-lea număr prim și va calcula pătratul acestuia, folosind o funcție care verifică dacă un număr dat este prim. Rezultatul este apoi afișat la ecran.