0379 - A Prim: Difference between revisions

From Bitnami MediaWiki
Pagină nouă: == Cerinţa == Se citește un număr natural. Să se verifice dacă este aproape prim. == Date de intrare == Programul citește de la tastatură numărul '''numar'''. == Date de ieşire == Programul afișează pe ecran cuvântul '''DA''', dacă '''numar''' este aproape prim, respectiv '''NU''' în caz contrar. == Restricții și precizări == * 1 ≤ numar ≤ 1.000.000.000 == Exemplu == ; Intrare : 35 ; Ieșire : Datele introduse corespund restricțiilor impuse. : DA <br> ;...
 
No edit summary
 
(One intermediate revision by one other user not shown)
Line 20: Line 20:
: NU
: NU
== Explicație ==  
== Explicație ==  
'''35=5*7. 50''' nu poate fi scris ca produs de două numere prime distincte.
:'''35=5*7.  
:'''50''' nu poate fi scris ca produs de două numere prime distincte.
 
== Rezolvare ==
== Rezolvare ==
<syntaxhighlight lang="python" line>
<syntaxhighlight lang="python" line>
Line 57: Line 59:


</syntaxhighlight>
</syntaxhighlight>
==Explicație rezolvare==
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'''.

Latest revision as of 11:22, 6 April 2023

Cerinţa[edit]

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

Date de intrare[edit]

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

Date de ieşire[edit]

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

Restricții și precizări[edit]

  • 1 ≤ numar ≤ 1.000.000.000

Exemplu[edit]

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]

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

Rezolvare[edit]

<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]

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.