0379 - A Prim: Difference between revisions
Paul Matei (talk | contribs) 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> ;... |
Diana Butuza (talk | contribs) |
||
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> |
Revision as of 18:14, 19 March 2023
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
<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>