0379 - A Prim
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.