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> ;...)
 
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>

Versiunea de la data 19 martie 2023 18:14

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()