Klassgruppen Introduktion, faktorisering och implementation

Givet ett heltal n så utforskar denna text olika sätt att hitta ns faktorer, med fokus på Shanks Klassgruppmetod, även om korta beskrivningar av Pollards p -1- och rho-algoritmer ges. Klassgruppen introduceras som en mängd av ekvivalensklasser av fraktionsideal i imaginära kvadratiska talkroppar, va...

Full description

Bibliographic Details
Main Author: Ohlsson Ångnell, Isak
Format: Others
Language:Swedish
Published: KTH, Skolan för teknikvetenskap (SCI) 2019
Subjects:
Online Access:http://urn.kb.se/resolve?urn=urn:nbn:se:kth:diva-254703
Description
Summary:Givet ett heltal n så utforskar denna text olika sätt att hitta ns faktorer, med fokus på Shanks Klassgruppmetod, även om korta beskrivningar av Pollards p -1- och rho-algoritmer ges. Klassgruppen introduceras som en mängd av ekvivalensklasser av fraktionsideal i imaginära kvadratiska talkroppar, varpå en isomorfi till en mängd av ekvivalensklasser av binära kvadratiska former av given diskriminant D ges. Denna isomorfi ger upphov till en abstrakt gruppoperation under vilken element av ordning 2 svarar mot en faktorisering av n. Shanks Klassgruppmetod beskriver hur en kan finna element av ordning 2 med tidskomplexitet O(|D|^(1/4)), vari det största problemet ligger i att hitta klassgruppens exponent. Detta görs med hjälp av Shanks’ Baby-Steps-Giant-Steps-metod, vilken finner exponenten av ändliga grupper. Implementationer i Python 3 återfinns i appendix. === Given an integer n, this text explores different ways of finding factors of n, with focus on Shanks’ Class Group Method as described by Henri Cohen in A Course in Algebraic Number Theory, although brief summaries of Pollard’s p - 1 and rho algorithms for factoring an integer are given as well. The class group is introduced as a set of equivalence classes of fractional ideals in imaginary quadratic fields before an isomorphism with a set of equivalence classes of binary quadratic forms of a given discriminant, D, is given. This isomorphism gives rise to an abstract group operation under which elements of order 2, so called ambiguous forms, constitute a factorisation of n. The Class Group Method describes how to find ambiguous elements and factorise n in O(|D|^(1/4)) time, where the main problem lies in finding the exponent of the class group, which is done using Shanks’ Baby-Steps-Giant-Steps method for finite groups. Implementations in Python 3 are found in the appendix.