0379 - A Prim

From Bitnami MediaWiki
Revision as of 11:22, 6 April 2023 by Paul Matei (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

Cerinţa[edit | edit source]

Se citește un număr natural. Să se verifice dacă este aproape prim.

Date de intrare[edit | edit source]

Programul citește de la tastatură numărul numar.

Date de ieşire[edit | edit source]

Programul afișează pe ecran cuvântul DA, dacă numar este aproape prim, respectiv NU în caz contrar.

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

  • 1 ≤ numar ≤ 1.000.000.000

Exemplu[edit | edit source]

Intrare
35
Ieșire
Datele introduse corespund restricțiilor impuse.
DA


Intrare
50
Ieșire
Datele introduse nu corespund restricțiilor impuse.
NU

Explicație[edit | edit source]

35=5*7.
50 nu poate fi scris ca produs de două numere prime distincte.

Rezolvare[edit | edit source]

<syntaxhighlight lang="python" line> def validare_date(numar):

   flag = False
   if numar.isdigit():
       if 0 <= int(numar) <= 1_000_000_000:
           flag = True
   return flag

def is_near_prime(numar):

   if numar < 2:
       return False
   for i in range(2, int(numar ** 0.5) + 1):
       if numar % i == 0:
           return False
   return True

def is_near_prime_or_not(numar):

   if is_near_prime(numar) or is_near_prime(numar - 1) or is_near_prime(numar + 1):
       print("NU")
   else:
       print("DA")

def main():

   numar = input("Introduceti un numar natural: ")
   if validare_date(numar):
       numar = int(numar)
       is_near_prime_or_not(numar)
   else:
       print("Numarul introdus nu este valid.")

if __name__ == "__main__":

   main()


</syntaxhighlight>

Explicație rezolvare[edit | edit source]

Acest cod verifică dacă un număr natural introdus de la tastatură este un număr prim sau nu. Dacă numărul introdus nu este valid (nu este un număr natural între 0 și 1.000.000.000), programul va afișa un mesaj de eroare. În caz contrar, programul va verifica dacă numărul sau numerele adiacente (numărul anterior și numărul următor) sunt prime sau nu, utilizând funcția is_near_prime(). Dacă cel puțin unul dintre aceste numere este prim, programul va afișa NU, altfel va afișa DA.