Exemplo n.º 1
0
def bezoud_test():
    size = []
    times = []

    i = 1000
    counter = 0
    while i < 50000: 

        # Generem dos nombres aleatoris amb llargada i
        a = generateRandomValue(i)
        b = generateRandomValue(i)

        # Generem una variable on hi desem el codi que executarem per poder calcular el temps. 
        start = time.time()
        bezoud(a, b)
        
        elapsed_time = time.time() - start
        size.append(i)
        times.append(elapsed_time)

        i += 2000

    plt.plot(size, times, label='linear')
    plt.legend()
    plt.show()
Exemplo n.º 2
0
def euclides_test():
    print("algoritme d'euclides")
    print("--------------------")
    print(
        "Entra si vols que s'autogenerin els numeros o si prefereixes entrar-los tu."
    )
    print("- 0 -> Generats amb un nombre aleatori de 1 a " + str(digits) +
          " digits")
    print("- 1 -> A manija")
    option = getNumber("Escull una opcio : ")
    a = 0
    b = 0
    if (option == 0):
        a = generateRandomValue(random.randint(1, digits))
        b = generateRandomValue(random.randint(1, digits))
    else:
        a = getNumber("enter the first number: ")
        b = getNumber("enter the second number: ")

    print("Els nombres que s'utilitzen son : ")
    print("")
    print(a)
    print("")
    print(b)
    print("")
    print("Calculem el MCD ...")
    print("")
    # Considerem a com a divident i b com a divisor
    while (a % b != 0):
        tmp = b
        b = a % b
        a = tmp

    print("El maxim comu divisor es el " + str(b))
Exemplo n.º 3
0
def test_log_discret():
    from modular import log_discret

    size = []
    times = []

    # Fixem els valors de la base i del nombre a 3 xifres    
    base = generateRandomValue(3)
    p = generateRandomValue(3)

    i = 1
    while i < 300: 

        # Generem nombre aleatori amb llargada i
        
        base = generateRandomValue(i)
        a = generateRandomValue(i)
        print("Processant operacio -> " + str(base) + "^" + str(a) + "(mod " + str(p) + ")")
        # Generem una variable on hi desem el codi que executarem per poder calcular el temps. 
        start = time.time()
        log_discret(base, a, p)
        elapsed_time = time.time() - start

        size.append(i)
        times.append(elapsed_time)

        i += 1

    plt.plot(size, times, label='linear')
    plt.legend()
    plt.show()
Exemplo n.º 4
0
def test_potencia():
    from utils import potencia_modular_eficient

    size = []
    times = []

    # Fixem el valor de l'exponent a un nombre de 100 dígits
    a = generateRandomValue(10)

    i = 1
    while i < 300: 

        # Generem nombre aleatori amb llargada i
        
        base = generateRandomValue(i)
        p = generateRandomValue(i)
        print("Processant operacio -> " + str(base) + "^" + str(a) + "(mod " + str(p) + ")")
        # Generem una variable on hi desem el codi que executarem per poder calcular el temps. 
        start = time.time()
        potencia_modular_eficient(base, a, p)
        elapsed_time = time.time() - start

        size.append(i)
        times.append(elapsed_time)

        i += 1

    plt.plot(size, times, label='linear')
    plt.legend()
    plt.show()
Exemplo n.º 5
0
def bezoud_test():
    print("algoritme d'euclides")
    print("--------------------")
    print(
        "Entra si vols que s'autogenerin els numeros o si prefereixes entrar-los tu."
    )
    print("- 0 -> Generats amb un nombre aleatori de 1 a " + str(digits) +
          " digits")
    print("- 1 -> A manija")
    option = getNumber("Escull una opcio : ")
    a = 0
    b = 0
    if (option == 0):
        a = generateRandomValue(random.randint(1, digits))
        b = generateRandomValue(random.randint(1, digits))
    else:
        print("The first number must be grather than the second!")
        a = getNumber("enter the first number: ")
        b = getNumber("enter the second number: ")

    ina = a
    inb = b

    print("Els nombres que s'utilitzen son : ")
    print(ina)
    print(inb)
    print("")
    print("Calculem el MCD i la identitat de Bezoud...")
    print("")
    # Considerem a com a divident i b com a divisor
    qant = 0
    pant = 1
    qact = 1
    pact = 0
    iteration = 0

    while (a % b != 0):
        quo = a // b
        qtmp = quo * qact + qant
        ptmp = quo * pact + pant
        qant = qact
        pant = pact
        qact = qtmp
        pact = ptmp

        tmp = b
        b = a % b
        a = tmp
        iteration += 1

    if (iteration % 2 == 0):
        pact *= -1
    else:
        qact *= -1
    print("MCD : " + str(b))
    print("Q_i : " + str(qact))
    print("P_i : " + str(pact))
    print("Moreover, ... : " + str(b) + " = " + str(qact) + "*" + str(inb) +
          " + " + str(pact) + "*" + str(ina))
Exemplo n.º 6
0
def test_factors_primers():
    size = []
    times = []

    i = 10
    while i < 100: 
        a = generateRandomValue(i)
        print(a)
        start = time.time()
        factors_primers(a)
        elapsed_time = time.time() - start
        i += 10
        size.append(i)
        times.append(elapsed_time)

    plt.plot(size, times, label='linear')
    plt.legend()
    plt.show()
Exemplo n.º 7
0
def fermat():
    size = []
    times = []
    i = 1
    while i <= 6:
        a = generateRandomValue(i)
        # Obtenim el següent nombre primer de i xifres
        a = getNextPrime(a)
        print(a)
        # Un cop sé que és primer calcule què trigo en verificar-ho
        start = time.time()
        primerR = esPrimer(a)
        elapsed_time = time.time() - start
        if primerR:
            size.append(i)
            times.append(elapsed_time)
        i+=1

    plt.plot(size, times, label='linear')
    plt.legend()
    plt.show()