0379 - A Prim: Diferență între versiuni
De la Universitas 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> ;...) |
Fără descriere a modificării |
||
(Nu s-a afișat o versiune intermediară efectuată de un alt utilizator) | |||
Linia 20: | Linia 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> | ||
Linia 57: | Linia 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'''. |
Versiunea curentă din 6 aprilie 2023 11:22
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
- Intrare
- 50
- Ieșire
- Datele introduse nu corespund restricțiilor impuse.
- NU
Explicație
- 35=5*7.
- 50 nu poate fi scris ca produs de două numere prime distincte.
Rezolvare
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()
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.