示例#1
0
def lenstra(numero, k, a):
    '''
	 * Factoriza un número por el método de Lenstra en k iteraciones.
	'''
    inicial = punto.Punto()
    t = punto.Punto()
    inicial.setX(1)
    inicial.setY(1)

    i = 2
    for i in range(i, k):
        t = mult_escalar(i, inicial, numero)
        print "t = ", i, "*(1,1)= (", t.getX(), ",", t.getY(
        ), "), y^2 = x^3 + ", a, "x - ", a, " mod ", numero

        # Calculamos el mcd del denominador de la pendiente y el numero
        mcd1 = mcd(t.getDen(), numero)
        print "Con ", i, "*(1,1) tenemos mcd(r = ", t.getDen(
        ), ", n = ", numero, ") = ", mcd1, "\n"
        print "-----------------\n"

        # Caso donde son primos relativos
        if (mcd1 != 1):
            print "", mcd1, " es factor de ", numero, " usando a = ", a, " en la iteración ", i, "!\n"

    print "No se encontró factor de ", numero, " con a = ", a, " y en k (k =", k, ") iteraciones."
    print "Intenta con una k más grande u otro valor de a con y^2 = x^2 + ax - a\n"
def funcionArea():
    p = Punto()
    p.x = coord_x1.get()
    p.y = coord_y1.get()
    q = Punto()
    q.x = coord_x2.get()
    q.y = coord_y2.get()
    rta = 0.0
    tip = ""
    if variable.get() == "4":
        f = Rectangulo()
        f.setPuntos(p, q)
        f.areaR()
        rta = f.area
        tip = "rectángulo"
    elif variable.get() == "3":
        f = Triangulo()
        f.setPuntos(p, q)
        f.areat()
        rta = f.area
        tip = "triángulo"
    elif variable.get() == "2":
        f = Circulo()
        f.setPuntos(p, q)
        f.areac()
        rta = f.area
        tip = "círculo"
    else:
        f = Cuadrado()
        f.setPuntos(p, q)
        f.areaCu()
        rta = f.area
        tip = "cuadrado"
    respuesta = tk.Label(root, text="El área del " + tip + " es " + str(rta))
    respuesta.grid(row=9, column=0, columnspan=2)
示例#3
0
def mult_escalar(k, p, num):
    '''
	 * Función que calcula R = P+P+...+P (k veces), es decir, R = kP en y^2 = x^3 + ax + B
	'''
    r = punto.Punto()
    t = punto.Punto()
    r.setX(0)
    r.setY(0)

    for i in xrange(k):
        t = suma_puntos(p, r, num)
        r = t

    return r
def funcionPerimetro():
    p = Punto()
    p.x = coord_x1.get()
    p.y = coord_y1.get()
    q = Punto()
    q.x = coord_x2.get()
    q.y = coord_y2.get()
    if variable.get() == "4":
        f = Rectangulo()
        f.setPuntos(p, q)
        f.perimetroR()
        print "El perímetro del rectángulo es: " + str(f.perimetro)
    elif variable.get() == "3":
        f = Triangulo()
        f.setPuntos(p, q)
        f.perimetrot()
        print "El perímetro del triángulo es: " + str(f.perimetro)
    elif variable.get() == "2":
        f = Circulo()
        f.setPuntos(p, q)
        f.perimetroc()
        print "El perímetro del  círculo es: " + str(f.perimetro)
    else:
        f = Cuadrado()
        f.setPuntos(p, q)
        f.perimetroCu()
        print "El perímetro del  cuadrado es: " + str(f.perimetro)
def funcionArea():
    p = Punto()
    p.x = coord_x1.get()
    p.y = coord_y1.get()
    q = Punto()
    q.x = coord_x2.get()
    q.y = coord_y2.get()
    if variable.get() == "4":
        f = Rectangulo()
        f.setPuntos(p, q)
        f.areaR()
        print "El área del  rectángulo es: " + str(f.area)
    elif variable.get() == "3":
        f = Triangulo()
        f.setPuntos(p, q)
        f.areat()
        print "El área del  triángulo es: " + str(f.area)
    elif variable.get() == "2":
        f = Circulo()
        f.setPuntos(p, q)
        f.areac()
        print "El área del  círculo es: " + str(f.area)
    else:
        f = Cuadrado()
        f.setPuntos(p, q)
        f.areaCu()
        print "El área del  cuadrado es: " + str(f.area)
示例#6
0
class Main:
    
    puntoOrigen = Punto()
    puntoFin = Punto()
    Figura = f
    print('1.Circulo\n2.Cuadrado\n3.Triangulo\n4.Rectangulo\n5.Elipse')
    print('Elija una opcion: ')
    int(input(opc))
    
    if opc == 1:
        print('Trabajando con Circulo: ')
        f = Circulo()
        puntoOrigen.setX(0)
        puntoOrigen.setY(0)
        puntoFin.setX(5)
        puntoFin.setY(0)
        mostrar(f, puntoOrigen, fin)
    elif opc == 3:
        print('Trabajando con Triangulo: ')
        f = Triangulo()
        puntoOrigen.setX(0)
        puntoOrigen.setY(0)
        puntoFin.setX(5)
        puntoFin.setY(0)
        mostrar(f, puntoOrigen, puntoFin)    
    elif opc == 2:
        print('Trabajando con Cuadrado: ')
        f = Cuadrado()
        puntoOrigen.setX(0)
        puntoOrigen.setY(0)
        puntoFin.setX(5)
        puntoFin.setY(0)
        mostrar(f, puntoOrigen, puntoFin)        
    elif opc == 4:
        print('Trabajando con Rectangulo: ')
        f = Rectangulo()
        puntoOrigen.setX(0)
        puntoOrigen.setY(0)
        puntoFin.setX(5)
        puntoFin.setY(0)
        mostrar(f, puntoOrigen, puntoFin)
    elif opc == 5:
        print('Trabajando con Elipse: ')
        f = Elipse()
        puntoOrigen.setX(0)
        puntoOrigen.setY(0)
        puntoFin.setX(5)
        puntoFin.setY(0)
        mostrar(f, puntoOrigen, puntoFin)        
示例#7
0
def suma_puntos_diferentes(p, q, num):
    '''
	 * Suma puntos de la curva eliptica y^2 = x^3 + ax + B con la operacion intuitiva
	 * en el caso que p != q , tiene 3 subcasos 
	 * a) si p = 0
	 * b) si q = 0
	 * c) si p = -q
	'''
    r = punto.Punto()

    if ((p.getX() == 0) and (p.getY() == 0)): return q

    if ((q.getX() == 0) and (q.getY() == 0)): return p

    if ((p.getX() == q.getX()) & (q.getY() == (-1 * p.getY()))):
        r.setX(0)
        r.setY(0)
        return r

    r.setLambda(
        modn((q.getY() - p.getX()) * inverso_modular(q.getX() - p.getX(), num),
             num))
    r.setNum(modn(q.getY() - p.getY(), num))
    r.setDen(modn(q.getX() - p.getX(), num))
    r.setX(
        modn(
            modn(r.getLambda() * r.getLambda(), num) + modn(
                (-1 * p.getX()), num) + modn((-1 * q.getX()), num), num))
    r.setY(modn((r.getLambda() * (p.getX() - r.getX())) - p.getY(), num))
    return r
示例#8
0
    def calcularArea(self):

        temp = p.Punto()
        temp.setX(self.origen.getX())
        temp.setY(self.fin.getY())
        a = temp.calcularDistancia(self.fin)
        b = self.origen.calcularDistancia(temp)
        self.area = math.pi * a * b
示例#9
0
    def calcularPerimetro(self):

        temp = p.Punto()
        temp.setX(self.origen.getX())
        temp.setY(self.fin.getY())
        a = temp.calcularDistancia(self.fin)
        b = self.origen.calcularDistancia(temp)
        self.perimetro = (2 * math.pi) * (math.sqrt(((a**2) + (b**2)) / 2))
示例#10
0
    def calcularArea(self):

        temp = p.Punto()
        temp.setX(self.origen.getX())
        temp.setY(self.fin.getY())
        base = temp.calcularDistancia(self.fin)
        altura = self.origen.calcularDistancia(temp)
        self.area = base * altura
示例#11
0
    def calcularPerimetro(self):

        temp = p.Punto()
        temp.setX(self.origen.getX())
        temp.setY(self.fin.getY())
        base = temp.calcularDistancia(self.fin)
        altura = self.origen.calcularDistancia(temp)
        self.perimetro = (base + altura) * 2
示例#12
0
 def base(self):
     if self.P1.X == self.P2.X:
         print("No se puede formar un rectangulo.")
         return
     P3 = Punto.Punto(self.P2.X, self.P1.Y)
     base = self.P1.distancia(P3)
     print(f"La base mide {base}")
     return base
示例#13
0
 def altura(self):
     if self.P1.X == self.P2.X:
         print("No se puede formar un rectangulo.")
         return
     P3 = Punto.Punto(self.P2.X, self.P1.Y)
     altura = self.P2.distancia(P3)
     print(f"La altura mide {altura}")
     return altura
示例#14
0
    def __init__(self):
        self.punto1 = pt.Punto()
        self.punto2 = pt.Punto()
        self.ventana1 = tk.Tk()
        self.ventana1.geometry("800x600")
        self.ventana1.title("Distancias")

        self.labelframe1 = tk.LabelFrame(self.ventana1, text="Punto 1:")
        self.labelframe1.grid(column=0, row=0, padx=5, pady=10)
        self.label1 = tk.Label(self.labelframe1, text="x1:")
        self.label1.grid(column=0, row=0, padx=4, pady=4)
        self.descripcioncarga = tk.StringVar()
        self.entrydescripcion = tk.Entry(self.labelframe1,
                                         textvariable=self.descripcioncarga)
        self.entrydescripcion.grid(column=1, row=0, padx=4, pady=4)
        self.label2 = tk.Label(self.labelframe1, text="y1:")
        self.label2.grid(column=0, row=1, padx=4, pady=4)
        self.x1 = tk.StringVar()
        self.entryx1 = tk.Entry(self.labelframe1, textvariable=self.x1)
        self.entryx1.grid(column=1, row=1, padx=4, pady=4)

        self.labelframe2 = tk.LabelFrame(self.ventana1, text="Punto 2:")
        self.labelframe2.grid(column=1, row=0, padx=5, pady=10)
        self.label1 = tk.Label(self.labelframe2, text="x1:")
        self.label1.grid(column=0, row=0, padx=4, pady=4)
        self.descripcioncarga = tk.StringVar()
        self.entrydescripcion = tk.Entry(self.labelframe2,
                                         textvariable=self.descripcioncarga)
        self.entrydescripcion.grid(column=1, row=0, padx=4, pady=4)
        self.label2 = tk.Label(self.labelframe2, text="y1:")
        self.label2.grid(column=0, row=1, padx=4, pady=4)
        self.x1 = tk.StringVar()
        self.entryx1 = tk.Entry(self.labelframe2, textvariable=self.x1)
        self.entryx1.grid(column=1, row=1, padx=4, pady=4)

        self.boton1 = tk.Button(self.ventana1,
                                text="Confirmar",
                                command=self.agregar)
        self.boton1.grid(column=1, row=2, padx=4, pady=4)

        self.ventana1.mainloop()
示例#15
0
def suma_puntos_iguales(p, num):
    '''
	 * Función que calcula R = P+P = 2P en la curva y^2 = x^3 + ax + B
	'''
    r = punto.Punto()
    r.setLambda(
        modn(((3 * (p.getX() * p.getX())) + a) *
             inverso_modular(p.getY() * 2, num), num))
    r.setNum(modn((3 * (p.getX() * p.getX()) + a), num))
    r.setDen(modn(p.getY() * 2, num))
    r.setX(
        modn(
            modn((r.getLambda() * r.getLambda()), num) -
            modn(2 * p.getX(), num), num))
    r.setY(modn((r.getLambda() * (p.getX() - r.getX())) - p.getY(), num))
    return r
示例#16
0
def funcionPerimetro():
    p = Punto()
    p.x = coord_x1.get()
    p.y = coord_y1.get()
    q = Punto()
    q.x = coord_x2.get()
    q.y = coord_y2.get()
    rta = 0.0
    tip = ""

    if variable.get() == "4":
        f = Rectangulo()
        f.setPuntos(p, q)
        f.perimetror()
        rta = f.perimetro
        tip = "rectángulo"

    elif variable.get() == "3":
        f = Triangulo()
        f.setPuntos(p, q)
        f.perimetroTri()
        rta = f.perimetro
        tip = "triángulo"
    elif variable.get() == "2":
        f = Circulo()
        f.setPuntos(p, q)
        f.perimetroc()
        rta = f.perimetro
        tip = "círculo"
    else:
        f = Cuadrado()
        f.setPuntos(p, q)
        f.perimetroCu()
        rta = f.perimetro
        tip = "cuadrado"
    respuesta = tk.Label(root,
                         text="El perímetro del " + tip + " es " + str(rta))
    respuesta.grid(row=9, column=2, columnspan=2)
示例#17
0
 def testdeterminarDentro(self):
     p1 = Punto(0, 0)
     c3 = Circulo(3, p1)
     p2 = Punto(1, 2)
     self.assertEqual(True, c3.determinarDentro(p2))
示例#18
0
 def __init__(self, p1=Punto.Punto(0, 0), p2=Punto.Punto(0, 0)):
     self.P1 = p1
     self.P2 = p2
示例#19
0
 def calcularDistancia(self):
     p1 = Punto(2, 0)
     p2 = Punto(-3, 0)
     d = int(p1.calcularDistancia(p2))
     self.assertEqual(5, d)
from Punto import *

punto = Punto(2, 3)
punto.muestraPunto()
示例#21
0
 def __init__(self):
     self.p1 = Punto()
     self.p2 = Punto()
     self.area = 0
示例#22
0
 def perimetroTri(self):
     p3 = Punto()
     p3.x = self.p1.x
     p3.y = self.p2.y
     self.perimetro = p3.Distancia(self.p1) + p3.Distancia(
         self.p2) + self.p1.Distancia(self.p2)
示例#23
0
 def __init__(self):
     self.origen = p.Punto()
     self.fin = p.Punto()
     self.area = 0
     self.perimetro = 0
示例#24
0
 def areat(self):
     p3 = Punto()
     p3.x = self.p1.x
     p3.y = self.p2.y
     self.area = p3.Distancia(self.p1) * p3.Distancia(self.p2) / 2
示例#25
0
 def __init__(self):
     self.area = 0
     self.perimetro = 0
     self.p1 = Punto()
     self.p2 = Punto()
示例#26
0
 def test(self):
      p1=Punto(1,0)
      p2=Punto(-1,0)
      distancia=p1.hallarDistancia(p2)
      self.assertEqual(2,distancia)
示例#27
0
from Punto import *
from Rectangulo import *
from Circulo import *
from Triangulo import *
from Cuadrado import *

p1 = Punto()
p2 = Punto()
p1.x = input("Ingrese la coordenada en x del primer punto: ")
p1.y = input("Ingrese la coordenada en y del primer punto: ")
p2.x = input("Ingrese la coordenada en x del segundo punto: ")
p2.y = input("Ingrese la coordenada en y del segundo punto: ")

r = Rectangulo()
r.setPuntos(p1, p2)
r.areaR()
r.perimetror()

c = Circulo()
c.setPuntos(p1, p2)
c.areac()
c.perimetroc()

t = Triangulo()
t.setPuntos(p1, p2)
t.areat()
t.perimetrot()

cu = Cuadrado()
cu.setPuntos(p1, p2)
cu.areaCu()
示例#28
0
import unittest
import sys
sys.path.append("src")
import Punto
import Rectangulo
from math import sqrt


A = Punto.Punto(2, 3)
B = Punto.Punto(-5, 5)
C = Punto.Punto(-3, -1)
D = Punto.Punto(1, -1)
E = Punto.Punto(0, 0)


class TestPunto(unittest.TestCase):
    def test_cuadrante(self):
        self.assertEqual(E.cuadrante(), "Origen de coordenadas.")
        self.assertEqual(A.cuadrante(), "Primer cuadrante.")
        self.assertEqual(B.cuadrante(), "Segundo cuadrante.")
        self.assertEqual(C.cuadrante(), "Tercer cuadrante.")
        self.assertEqual(D.cuadrante(), "Cuarto cuadrante.")

    def test_distancia(self):
        self.assertAlmostEqual(A.distancia(B), sqrt(53))

    def test_mas_lejos(self):
        mas_alejado = max([A, B, C, D], key=lambda p: p.distancia(E))
        self.assertIs(mas_alejado, B)
        self.assertEqual(mas_alejado.distancia(D), B.distancia(D))
示例#29
0
 def testPerimetro(self):
     p1 = Punto(0, 0)
     c = Circulo(3, p1)
     self.assertEqual(6 * math.pi, c.hallarPerimetro())
示例#30
0
 def testArea(self):
     p1 = Punto(0, 0)
     c2 = Circulo(3, p1)
     self.assertEqual(9 * math.pi, c2.hallarArea())