3237 - GCDnot1: Difference between revisions

From Bitnami MediaWiki
Pagină nouă: == Cerinta == Se dau m şi n numere naturale nenule. Să se determine două numere naturale a şi b astfel încât c.m.m.d.c.(a + i , b + j) > 1 pentru orice i = 0 , m-1 şi orice j = 0 , n-1. == Date de intrare == Programul citește de la tastatură numerele m şi n. == Date de iesire == Programul va afișa pe ecran numerele a şi b. == Restrictii si precizari == *1 ≤ m , n ≤ 5 *numerele a şi b vor avea cel mult 18 cifre fiecare == Exemplul 1 == ;Intrare :1 2 ;I...
 
 
(2 intermediate revisions by the same user not shown)
Line 1: Line 1:
== Cerinta ==
== Cerinta ==


Se dau m şi n numere naturale nenule. Să se determine două numere naturale a şi b astfel încât c.m.m.d.c.(a + i , b + j) > 1 pentru orice i = 0 , m-1 şi orice j = 0 , n-1.
Se dau '''m''' şi '''n''' numere naturale nenule. Să se determine două numere naturale '''a''' şi '''b''' astfel încât '''c.m.m.d.c.(a + i , b + j) > 1''' pentru orice i = 0 , m-1 şi orice j = 0 , n-1.


== Date de intrare ==
== Date de intrare ==


Programul citește de la tastatură numerele m şi n.
Programul citește de la tastatură numerele '''m''' şi '''n'''.


== Date de iesire ==
== Date de iesire ==


Programul va afișa pe ecran numerele a şi b.
Programul va afișa pe ecran numerele '''a''' şi '''b'''.


== Restrictii si precizari ==
== Restrictii si precizari ==


*1 m , n 5
*1 ⩽ m , n ⩽ 5
*numerele a şi b vor avea cel mult 18 cifre fiecare
*numerele a şi b vor avea cel mult 18 cifre fiecare


Line 20: Line 20:
:1 2
:1 2
;Iesire
;Iesire
;Datele introduse corespund restrictiilor impuse
:Datele introduse corespund restrictiilor impuse
:6 14
:6 14


Line 27: Line 27:
:0 100
:0 100
;Iesire
;Iesire
;Datele introduse nu corespund restrictiilor impuse
:Datele introduse nu corespund restrictiilor impuse




== Rezolvare ==
== Rezolvare ==
<syntaxhighlight lang="python3" line="1">
<syntaxhighlight lang="python3" line="1">
def cmmdc(a, b):
def este_prim(numar):
     while b:
     if numar < 2:
         a, b = b, a % b
         return False
     return a
    for i in range(2, int(numar ** 0.5) + 1):
        if numar % i == 0:
            return False
     return True


def main():
def gaseste_numere_prime(m, n):
     # Citirea datelor de intrare
     for a in range(2, 1000):
    m = int(input("Introduceti m: "))
        for b in range(a + 1, a + 1000):
    n = int(input("Introduceti n: "))
            if all(este_prim(a) and este_prim(b) and este_prim(a + n) and este_prim(b + m) and este_prim(a + i) and este_prim(b + j) for i in range(m) for j in range(n)):
                return a, b
 
# Citire date de intrare
m = int(input("Introduceți m: "))
n = int(input("Introduceți n: "))
 
# Găsire numere a și b
a, b = gaseste_numere_prime(m, n)
 
# Afișare rezultat
print(f"Numerele a și b sunt: {a}, {b}")


    # Alegem două numere prime între ele
    a = 2
    b = 3


    # Afișăm rezultatul
    print(f"Numerele a și b sunt: {a} și {b}")


if __name__ == "__main__":
    main()
</syntaxhighlight>
</syntaxhighlight>



Latest revision as of 11:31, 29 December 2023

Cerinta[edit | edit source]

Se dau m şi n numere naturale nenule. Să se determine două numere naturale a şi b astfel încât c.m.m.d.c.(a + i , b + j) > 1 pentru orice i = 0 , m-1 şi orice j = 0 , n-1.

Date de intrare[edit | edit source]

Programul citește de la tastatură numerele m şi n.

Date de iesire[edit | edit source]

Programul va afișa pe ecran numerele a şi b.

Restrictii si precizari[edit | edit source]

  • 1 ⩽ m , n ⩽ 5
  • numerele a şi b vor avea cel mult 18 cifre fiecare

Exemplul 1[edit | edit source]

Intrare
1 2
Iesire
Datele introduse corespund restrictiilor impuse
6 14

Exemplul 2[edit | edit source]

Intrare
0 100
Iesire
Datele introduse nu corespund restrictiilor impuse


Rezolvare[edit | edit source]

<syntaxhighlight lang="python3" line="1"> def este_prim(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 gaseste_numere_prime(m, n):

   for a in range(2, 1000):
       for b in range(a + 1, a + 1000):
           if all(este_prim(a) and este_prim(b) and este_prim(a + n) and este_prim(b + m) and este_prim(a + i) and este_prim(b + j) for i in range(m) for j in range(n)):
               return a, b
  1. Citire date de intrare

m = int(input("Introduceți m: ")) n = int(input("Introduceți n: "))

  1. Găsire numere a și b

a, b = gaseste_numere_prime(m, n)

  1. Afișare rezultat

print(f"Numerele a și b sunt: {a}, {b}")


</syntaxhighlight>

Explicatie[edit | edit source]

Avem (6 , 14) = 2 > 1 şi (6 , 15) = 3 > 1.