3237 - GCDnot1: Difference between revisions

From Bitnami MediaWiki
No edit summary
Line 32: Line 32:
== Rezolvare ==
== Rezolvare ==
<syntaxhighlight lang="python3" line="1">
<syntaxhighlight lang="python3" line="1">
def main():
def este_prim(numar):
     # Citim m și n de la tastatură
     if numar < 2:
     m = int(input("Introduceți m: "))
        return False
    n = int(input("Introduceți n: "))
     for i in range(2, int(numar ** 0.5) + 1):
        if numar % i == 0:
            return False
    return True


     # Alegem a și b astfel încât c.m.m.d.c.(a + i, b + j) > 1 pentru orice i și j
def gaseste_numere_prime(m, n):
    a = m
     for a in range(2, 1000):
    b = m * n
        for b in range(a + 1, a + 1000):
            if 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


    # Afișăm rezultatul
# Citire date de intrare
    print("a =", a)
m = int(input("Introduceti m: "))
    print("b =", b)
n = int(input("Introduceti n: "))
 
# Gasire numere a si b
a, b = gaseste_numere_prime(m, n)
 
# Afisare rezultat
print(f"Numerele a si b sunt: {a}, {b}")


if __name__ == "__main__":
    main()


</syntaxhighlight>
</syntaxhighlight>

Revision as of 09:23, 27 December 2023

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
Iesire
Datele introduse corespund restrictiilor impuse
6 14

Exemplul 2

Intrare
0 100
Iesire
Datele introduse nu corespund restrictiilor impuse


Rezolvare

<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 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("Introduceti m: ")) n = int(input("Introduceti n: "))

  1. Gasire numere a si b

a, b = gaseste_numere_prime(m, n)

  1. Afisare rezultat

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


</syntaxhighlight>

Explicatie

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