︠8001f8ad-e248-4d41-83be-558028f39d53︠ ︡1d643d4d-f148-44e8-9b58-07dd9322458e︡ ︠e935e21c-a0d5-43b9-876c-8dcb1fc50493︠ 2+3 # suma ︡4c30fcec-4baf-4d59-9aa2-545ba24c7b6a︡{"stdout":"5\n"}︡{"done":true} ︠90977827-c112-4611-99a3-89af0c4d00d3︠ 7//3 # cociente en la división entera ︡bc666a47-c94b-406b-862d-77328ef43c0c︡{"stdout":"2\n"}︡{"done":true} ︠3cc4fd40-dc36-4568-9a6a-23215f584540︠ 7%3 # resto de la división ︡9e4c69c0-d669-48ac-80a3-81cc40fcaac5︡{"stdout":"1\n"}︡{"done":true} ︠9132047a-d8f5-4048-a410-0f2985ec424b︠ factor(60) # factorización entera ︡3aa6b28b-00a7-4e2b-888e-f967b74499cd︡{"stdout":"2^2 * 3 * 5\n"}︡{"done":true} ︠5ec48ff9-a725-4e86-b3e7-6d391716314e︠ # Cuerpos finitos primos F_p F = GF(7) # Cuerpo primo F_7 ︡f6245258-781a-4d38-8bb0-e6a30ddbbef8︡{"done":true} ︠1615b7b6-ef87-4791-9388-8506c2bb15b3s︠ F.list() # Lista de elementos de F ︡9a8ddabb-f206-4c97-93b7-c1a1aabcc6ee︡{"stdout":"[0, 1, 2, 3, 4, 5, 6]\n"}︡{"done":true} ︠0b708596-82d9-453f-b3d8-f6d61cb8ffe6s︠ a = F(3); b = F(5) # Elementos de F ︡372a4e6c-e6fa-4c84-aa3d-a93733bdc824︡{"done":true} ︠96ad0ffe-052d-4883-a839-977bdd19eb7fs︠ a + b # suma a * b # producto a^-1 # inverso multiplicativo ︡85360394-e5d5-4669-bb46-bb3884b37755︡{"stdout":"1\n"}︡{"stdout":"1\n"}︡{"stdout":"5\n"}︡{"done":true} ︠9d95f2b1-1558-476e-9331-3338efdd97b6s︠ # Ejemplo: cuadrados en F_7 for x in F: print(x, x^2) ︡81bd2cbf-35c7-4c7a-afe9-7812c72c51c4︡{"stdout":"0 0\n1 1\n2 4\n3 2\n4 2\n5 4\n6 1\n"}︡{"done":true} ︠ffba3250-ac25-4d3f-bfba-0302a94a31e0︠ # Polinomios sobre cuerpos finitos R. = PolynomialRing(GF(3)) # Anillo de polinomios sobre F_3 ︡b1fc439c-202c-48c7-aee7-4df25cd9fb3e︡ ︠efc039d6-4b10-4472-8ad3-27a2ea9ed35a︠ f = x^2 + 1 ︡c62c2254-a353-4716-9d85-e340c7d05fab︡ ︠f637ba50-62f5-4082-a130-7bd707ee2117︠ f.is_irreducible() # ¿Es irreducible? ︡9e91a5c0-4c8f-4cef-b8e8-b92e75b0abda︡ ︠4a2075e1-7e87-4d02-8764-bb7c48dd24b7︠ f.factor() # Factorización ︡cbc95bcf-3e65-4b29-a0bf-585a4b5edae8︡ ︠42122d03-b451-4b01-91ff-43bc50ba22ab︠ # Extensiones de cuerpos finitos F_{p^m} # Definir F_{2^4} usando polinomio irreducible x^4 + x + 1 R. = PolynomialRing(GF(2)) ︡10f2c6c6-ceda-49ed-bc49-0281c09b8626︡ ︠5bf15c79-7fc7-48ee-8244-409c2a001d52︠ F. = GF(2^4, modulus=x^4 + x + 1) ︡885c1076-3125-42f4-853d-02e5d2787c0e︡ ︠539fd510-7d8a-48f5-a4bb-870bc843df92︠ F.order() # Cardinalidad del cuerpo (16) ︡fe0f52db-d9bf-4a2f-9386-108179cbda39︡ ︠3781c059-ea42-4035-ae3c-50299e162c96︠ F.multiplicative_generator() # Generador del grupo multiplicativo ︡613b52bf-aef6-4fa2-ba3e-494388fa7b70︡ ︠15b00645-dde6-49f2-970a-153b20a9df90︠ # Potencias del generador g = F.multiplicative_generator() [g^i for i in range(1, F.order())] ︡64a00759-ea5e-48d5-9407-1c3842f76849︡ ︠e292332f-de9e-4e6c-8d7e-aaaaf70198b0︠ # Operaciones en extensiones alpha = a # elemento del cuerpo extensión alpha^5 # potencia alpha.minpoly() # polinomio mínimo de alpha ︡2f3931b5-76e0-4421-98ea-7039a72816b4︡ ︠70ad2512-3e34-4d3e-b60e-48400236ad36︠ # Más ejemplos ############################################### # 1. Construir F_5. Calcular todos los inversos multiplicativos. F5 = GF(5) [(x, x^-1) for x in F5 if x != 0] ︡5288c7f0-43ad-41d2-ac10-042ab2c101b6︡ ︠2c3aa265-e5f1-44dd-8d84-83384abba7c6︠ # 2. En F_7, verificar el pequeño teorema de Fermat [(x, x^6) for x in GF(7)] ︡cd97f0aa-28ae-469b-a485-fc32c531e602︡ ︠76196d63-535f-4f88-84aa-8f3ef09ec9f4︠ # 3. Construir F_{3^2} con polinomio irreducible de grado 2 R. = PolynomialRing(GF(3)) F9. = GF(3^2, modulus=y^2+1) F9.list() ︡c7959a5a-eb9d-4b4d-b44d-210820bd13a4︡ ︠2b92a8d6-2edd-4fc8-a931-e714b3078729︠ # 4. En F_{2^4}, buscar un generador del grupo multiplicativo F.multiplicative_generator()