Mock Version: 1.2.17 Mock Version: 1.2.17 ENTER ['do'](['bash', '--login', '-c', '/usr/bin/rpmbuild -bs --target noarch --nodeps /builddir/build/SPECS/gap-pkg-factint.spec'], logger=user='mockbuild'shell=Falseenv={'SHELL': '/bin/bash', 'TERM': 'vt100', 'HOME': '/builddir', 'LANG': 'en_US.UTF-8', 'HOSTNAME': 'mock', 'PROMPT_COMMAND': 'printf "\x1b]0;\x07"', 'PATH': '/usr/bin:/bin:/usr/sbin:/sbin'}gid=425chrootPath='/var/lib/mock/f24-build-5576096-602979/root'uid=1000printOutput=Falsetimeout=172800) Executing command: ['bash', '--login', '-c', '/usr/bin/rpmbuild -bs --target noarch --nodeps /builddir/build/SPECS/gap-pkg-factint.spec'] with env {'SHELL': '/bin/bash', 'TERM': 'vt100', 'HOME': '/builddir', 'LANG': 'en_US.UTF-8', 'HOSTNAME': 'mock', 'PROMPT_COMMAND': 'printf "\x1b]0;\x07"', 'PATH': '/usr/bin:/bin:/usr/sbin:/sbin'} and shell False warning: Could not canonicalize hostname: buildvm-20-nfs.phx2.fedoraproject.org Building target platforms: noarch Building for target noarch Wrote: /builddir/build/SRPMS/gap-pkg-factint-1.5.3-1.fc24.src.rpm Child return code was: 0 ENTER ['do'](['bash', '--login', '-c', '/usr/bin/rpmbuild -bb --target noarch --nodeps /builddir/build/SPECS/gap-pkg-factint.spec'], logger=user='mockbuild'private_network=Trueshell=Falseenv={'SHELL': '/bin/bash', 'TERM': 'vt100', 'HOME': '/builddir', 'LANG': 'en_US.UTF-8', 'HOSTNAME': 'mock', 'PROMPT_COMMAND': 'printf "\x1b]0;\x07"', 'PATH': '/usr/bin:/bin:/usr/sbin:/sbin'}gid=425chrootPath='/var/lib/mock/f24-build-5576096-602979/root'uid=1000printOutput=Falsetimeout=172800) Executing command: ['bash', '--login', '-c', '/usr/bin/rpmbuild -bb --target noarch --nodeps /builddir/build/SPECS/gap-pkg-factint.spec'] with env {'SHELL': '/bin/bash', 'TERM': 'vt100', 'HOME': '/builddir', 'LANG': 'en_US.UTF-8', 'HOSTNAME': 'mock', 'PROMPT_COMMAND': 'printf "\x1b]0;\x07"', 'PATH': '/usr/bin:/bin:/usr/sbin:/sbin'} and shell False Building target platforms: noarch Building for target noarch Executing(%prep): /bin/sh -e /var/tmp/rpm-tmp.HdWFi3 + umask 022 + cd /builddir/build/BUILD + cd /builddir/build/BUILD + rm -rf factint + /usr/bin/bzip2 -dc /builddir/build/SOURCES/factint-1.5.3.tar.bz2 + /usr/bin/tar -xof - + STATUS=0 + '[' 0 -ne 0 ']' + cd factint + /usr/bin/chmod -Rf a+rX,u+w,g-w,o-w . + for fil in gap/factintaux.g gap/general.gi relnotes.txt + iconv -f iso8859-1 -t utf-8 gap/factintaux.g + touch -r gap/factintaux.g gap/factintaux.g.utf8 + mv -f gap/factintaux.g.utf8 gap/factintaux.g + for fil in gap/factintaux.g gap/general.gi relnotes.txt + iconv -f iso8859-1 -t utf-8 gap/general.gi + touch -r gap/general.gi gap/general.gi.utf8 + mv -f gap/general.gi.utf8 gap/general.gi + for fil in gap/factintaux.g gap/general.gi relnotes.txt + iconv -f iso8859-1 -t utf-8 relnotes.txt + touch -r relnotes.txt relnotes.txt.utf8 + mv -f relnotes.txt.utf8 relnotes.txt + exit 0 Executing(%build): /bin/sh -e /var/tmp/rpm-tmp.np8FAP + umask 022 + cd /builddir/build/BUILD + cd factint + ln -s /usr/lib/gap/doc ../../doc + mkdir ../pkg + ln -s ../factint ../pkg/factint + gap -l '/builddir/build/BUILD/factint/..;/usr/lib/gap' ********* GAP 4.8.3, 19-Mar-2016, build of 2016-05-05 22:03:13 (UTC) * GAP * http://www.gap-system.org ********* Architecture: x86_64-redhat-linux-gnu-gcc-default64 Libs used: gmp, readline Loading the library and packages ... Components: trans 1.0, prim 2.1, small* 1.0, id* 1.0 Packages: FactInt 1.5.3, GAPDoc 1.5.1 Try '?help' for help. See also '?copyright' and '?authors' gap> #I #I Composing XML document . . . #I #I Parsing XML document . . . #I #I recoding input from ISO-8859-1 to UTF-8 . . . #I #I Checking XML structure . . . #I #I Text version (also produces labels for hyperlinks): #I #I First run, collecting cross references, index, toc, bib and so on . . . #I #I Table of contents complete. #I #I Producing the index . . . #I #I Reading bibliography data files . . . #I #I BibXMLext format: factintbib.xml #I #I recoding input from ISO-8859-1 to UTF-8 . . . #I #I Writing bibliography . . . #I #I Second run through document . . . #I #I Producing simplified search strings and labels for hyperlinks . . . #I #I Constructing LaTeX version and calling pdflatex: #I #I recoding input from ISO-8859-1 to UTF-8 . . . #I #I Writing LaTeX file, #I 3 x pdflatex with bibtex and makeindex, #I #I #I Writing manual.six file ... #I #I #I Finally the HTML version . . . #I #I First run, collecting cross references, index, toc, bib and so on . . . #I #I Table of contents complete. #I #I Producing the index . . . #I #I Writing bibliography . . . #I #I Second run through document . . . #I #I - also HTML version for MathJax . . . #I #I First run, collecting cross references, index, toc, bib and so on . . . #I #I Table of contents complete. #I #I Producing the index . . . #I #I Writing bibliography . . . #I #I Second run through document . . . rec( Name := "FactInt", attributes := rec( ), bibdata := "factintbib.xml", bibentries := [ , , , , ], bibkeys := [ "Brent96", "Brent04", "Bressoud89", "Cohen93", "GAPDoc" ], biblabels := [ "Bre96", "Bre04", "Bre89", "Coh93", "LN07" ], bibpath := dir("doc/"), bibstrings := [ [ 0, 0 ] ], bibtext := "\n

\n

\n[Bre96] Brent\ , R. P.,\n Factorization of the Tenth and Eleventh Fer\ mat Numbers\n (1996)
\n(\n ftp://ftp.comlab.ox.ac.uk/pub/Documents/techpapers/\ Richard.Brent/rpb161tr.dvi.gz\n ).\n

\n\n\n

\n

\n[\ Bre04] Brent, R. P.,\n F\ actor Tables\n (2004)
\n(\n http://web.comlab.ox.ac.uk/oucl/work/richard.brent/factors.html\ \n ).\n

\n\n\n

\n

\n[Bre89] Bressoud, D. M.,\n Factorization and Primality Test\ ing,\n Springer-Verlag\n (1989).\n

\n\n\n

<\ /a>

\n

\n[Coh93] Cohen, H.,\n A Course in Computational Algebraic \ Number Theory,\n Springer-Verlag\n (1993).\n

\n\n\n

\n

\n[LN07] Lþbeck, F. and Neunhöffer, M.,\n \ GAPDoc (Version 1.0),\n RWTH Aachen\n\ (2007)
\n(\n GAP p\ ackage, http://www.\ gap-system.org/Packages/gapdoc.html\n ).\n

\n\n", bookname := "FactInt", chapsectlinks := rec( 1 := "\n", 2 := "\ \n\n\n", 3 := "\n\n\n\n<\ div class=\"ContSect\"> 3.6 Th\ e Multiple Polynomial Quadratic Sieve (MPQS)\n\n
\n
 &nb\ sp;3.6-1 FactorsMPQS\n
\n\n", 4 := "\n" ), chapsectlinkstext := rec( 1 := "\n", 2 := "\ \n\n\n", 3 := "\n\n\n\n<\ div class=\"ContSect\"> 3.6 Th\ e Multiple Polynomial Quadratic Sieve (MPQS)\n\n
\n
 &nb\ sp;3.6-1 FactorsMPQS\n
\n\n", 4 := "\n" ), chaptitle := rec( 1 := "Preface", 2 := "The General Factorization Routine", 3 := "The Routines for Specific Factorization Me\ thods", 4 := "How much Time does a Factorization take?" ), content := [ rec( content := "xml version=\"1.0\" encoding=\"ISO-8859-1\"", count := [ 0, 0, 0, 1 ], name := "XMLPI", root := ~ ), rec( content := "Book SYSTEM \"../../gapdoc/gapdoc.dtd\"\n [ GAP\">\n FactInt\ \">\n ]", count := [ 0, 0, 0, 1 ], name := "XMLDOCTYPE", root := ~ ), rec( content := "LaTeX ExtraPreamble=\"\\usepackage{amsfonts}\"", count := [ 0, 0, 0, 1 ], name := "XMLPI", root := ~ ), rec( content := "LaTeX ExtraPreamble=\"\\usepackage{amsxtra}\"", count := [ 0, 0, 0, 1 ], name := "XMLPI", root := ~ ), rec( content := " #######################################################\ ############# ", count := [ 0, 0, 0, 1 ], name := "XMLCOMMENT", root := ~ ), rec( content := " ## \ ## ", count := [ 0, 0, 0, 1 ], name := "XMLCOMMENT", root := ~ ), rec( content := " ## factint.xml FactInt documentation St\ efan Kohl ## ", count := [ 0, 0, 0, 1 ], name := "XMLCOMMENT", root := ~ ), rec( content := " ## \ ## ", count := [ 0, 0, 0, 1 ], name := "XMLCOMMENT", root := ~ ), rec( content := " #######################################################\ ############# ", count := [ 0, 0, 0, 1 ], name := "XMLCOMMENT", root := ~ ), rec( attributes := rec( Name := "FactInt" ), content := [ rec( content := " ################################################\ #################### ", count := [ 0, 0, 0, 1 ], mathmode := "Text", name := "XMLCOMMENT", root := ~ ), rec( attributes := rec( ), content := [ rec( attributes := rec( ), content := [ rec( attributes := rec( ), content := [ rec( content := "FactInt", count := [ 0, 0, 0, 1 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 0, 0, 0, 1 ], mathmode := "Text", name := "Package", next := 27, root := ~, start := 1, stop := 26 ) ], count := [ 0, 0, 0, 1 ], name := "Title", next := 818, root := ~, start := 794, stop := 817 ), rec( attributes := rec( ), content := [ rec( content := "Advanced Methods for Factoring In\ tegers", count := [ 0, 0, 0, 1 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 0, 0, 0, 1 ], name := "Subtitle", next := 881, root := ~, start := 821, stop := 880 ), rec( attributes := rec( ), content := [ rec( content := "\n Version 1.5.3\n ", count := [ 0, 0, 0, 1 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 0, 0, 0, 1 ], name := "Version", next := 924, root := ~, start := 884, stop := 923 ), rec( attributes := rec( ), content := [ rec( content := "\n Stefan Kohl\n ", count := [ 0, 0, 0, 1 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "stefan@mcs.st-and.ac.uk" , count := [ 0, 0, 0, 1 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 0, 0, 0, 1 ], mathmode := "Text", name := "Email", next := 994, root := ~, start := 956, stop := 993 ), rec( content := "\n ", count := [ 0, 0, 0, 1 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "\n http://www.gap-sy\ stem.org/DevelopersPages/StefanKohl/\n ", count := [ 0, 0, 0, 1 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 0, 0, 0, 1 ], mathmode := "Text", name := "Homepage", next := 1085, root := ~, start := 999, stop := 1084 ), rec( content := "\n ", count := [ 0, 0, 0, 1 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "\n Department of Mat\ hematics ", count := [ 0, 0, 0, 2 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := 0, count := [ 0, 0, 0, 2 ], mathmode := "Text", name := "Br", next := 1137, root := ~, start := 1132, stop := 1136 ), rec( content := "\n University of Vl\ ora ", count := [ 0, 0, 0, 2 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := 0, count := [ 0, 0, 0, 2 ], mathmode := "Text", name := "Br", next := 1169, root := ~, start := 1164, stop := 1168 ), rec( content := "\n Lagjja: Pavaresi\ a ", count := [ 0, 0, 0, 2 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := 0, count := [ 0, 0, 0, 2 ], mathmode := "Text", name := "Br", next := 1199, root := ~, start := 1194, stop := 1198 ), rec( content := "\n Vlore / Albania\\ n ", count := [ 0, 0, 0, 2 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 0, 0, 0, 2 ], name := "Address", next := 1236, root := ~, start := 1090, stop := 1235 ), rec( content := "\n ", count := [ 0, 0, 0, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 0, 0, 0, 1 ], name := "Author", next := 1248, root := ~, start := 927, stop := 1247 ), rec( attributes := rec( ), content := [ rec( content := "June 16, 2011", count := [ 0, 0, 0, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 0, 0, 0, 3 ], name := "Date", next := 1277, root := ~, start := 1251, stop := 1276 ), rec( attributes := rec( ), content := [ rec( content := "\n © 1999 - 2011 by Stefan Ko\ hl. ", count := [ 0, 0, 1, 1 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := 0, count := [ 0, 0, 1, 2 ], mathmode := "Text", name := "P", next := 1340, root := ~, start := 1336, stop := 1339 ), rec( content := "\n\n ", count := [ 0, 0, 1, 2 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "FactInt", count := [ 0, 0, 1, 2 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 0, 0, 1, 2 ], mathmode := "Text", name := "Package", next := 27, root := ~, start := 1, stop := 26 ), rec( content := " is free software: you can redis\ tribute it and/or modify\n it under the terms of the GNU General Public Lic\ ense as published by\n the Free Software Foundation, either version 2 of th\ e License, or\n (at your option) any later version. ", count := [ 0, 0, 1, 2 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := 0, count := [ 0, 0, 1, 3 ], mathmode := "Text", name := "P", next := 1599, root := ~, start := 1595, stop := 1598 ), rec( content := "\n\n ", count := [ 0, 0, 1, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "FactInt", count := [ 0, 0, 1, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 0, 0, 1, 3 ], mathmode := "Text", name := "Package", next := 27, root := ~, start := 1, stop := 26 ), rec( content := " is distributed in the hope that\ it will be useful,\n but WITHOUT ANY WARRANTY; without even the implied wa\ rranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n\ GNU General Public License for more details. ", count := [ 0, 0, 1, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := 0, count := [ 0, 0, 1, 4 ], mathmode := "Text", name := "P", next := 1852, root := ~, start := 1848, stop := 1851 ), rec( content := "\n\n For a copy of the GNU Ge\ neral Public License, see \n the file ", count := [ 0, 0, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "GPL", count := [ 0, 0, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 0, 0, 1, 4 ], mathmode := "Text", name := "F", next := 1932, root := ~, start := 1922, stop := 1931 ), rec( content := " in the ", count := [ 0, 0, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "etc", count := [ 0, 0, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 0, 0, 1, 4 ], mathmode := "Text", name := "F", next := 1950, root := ~, start := 1940, stop := 1949 ), rec( content := " directory of the ", count := [ 0, 0, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "GAP", count := [ 0, 0, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 0, 0, 1, 4 ], mathmode := "Text", name := "Package", next := 23, root := ~, start := 1, stop := 22 ), rec( content := "\n distribution or see ", count := [ 0, 0, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "http://www.gnu.org/licens\ es/gpl.html", count := [ 0, 0, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 0, 0, 1, 4 ], mathmode := "Text", name := "URL", next := 2045, root := ~, start := 1998, stop := 2044 ), rec( content := ".\n ", count := [ 0, 0, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 0, 0, 1, 1 ], name := "Copyright", next := 2061, root := ~, start := 1280, stop := 2060 ), rec( content := " #######################################\ ############################# ", count := [ 0, 0, 1, 4 ], name := "XMLCOMMENT", root := ~ ), rec( content := " ## \ ## ", count := [ 0, 0, 1, 4 ], name := "XMLCOMMENT", root := ~ ), rec( content := " ## abstract.xml FactInt document\ ation Stefan Kohl ## ", count := [ 0, 0, 1, 4 ], name := "XMLCOMMENT", root := ~ ), rec( content := " ## \ ## ", count := [ 0, 0, 1, 4 ], name := "XMLCOMMENT", root := ~ ), rec( content := " #######################################\ ############################# ", count := [ 0, 0, 1, 4 ], name := "XMLCOMMENT", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "\n\nThis package for ", count := [ 0, 0, 2, 1 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "GAP", count := [ 0, 0, 2, 1 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 0, 0, 2, 1 ], mathmode := "Text", name := "Package", next := 23, root := ~, start := 1, stop := 22 ), rec( content := " 4 provides a general-purpose i\ nteger\nfactorization routine, which makes use of a combination of factoring\n\ methods. In particular it contains implementations of the following\nalgorithm\ s:\n\n", count := [ 0, 0, 2, 1 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( attributes := rec( ), content := [ rec( content := "Pollard's ", count := [ 0, 0, 2, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "p-1", count := [ 0, 0, 2, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 0, 0, 2, 3 ], mathmode := "Text", name := "M", next := 2717, root := ~, start := 2707, stop := 2716 ) ], count := [ 0, 0, 2, 3 ], name := "Item", next := 2724, root := ~, start := 2691, stop := 2723 ), rec( attributes := rec( ), content := [ rec( content := "Williams' ", count := [ 0, 0, 2, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "p+1", count := [ 0, 0, 2, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 0, 0, 2, 5 ], mathmode := "Text", name := "M", next := 2753, root := ~, start := 2743, stop := 2752 ) ], count := [ 0, 0, 2, 5 ], name := "Item", next := 2760, root := ~, start := 2727, stop := 2759 ), rec( attributes := rec( ), content := [ rec( content := "Elliptic Curves M\ ethod (ECM)", count := [ 0, 0, 2, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 0, 0, 2, 7 ], name := "Item", next := 2804, root := ~, start := 2763, stop := 2803 ), rec( attributes := rec( ), content := [ rec( content := "Continued Fractio\ n Algorithm (CFRAC)", count := [ 0, 0, 2, 9 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 0, 0, 2, 9 ], name := "Item", next := 2856, root := ~, start := 2807, stop := 2855 ), rec( attributes := rec( ), content := [ rec( content := "Multiple Polynomi\ al Quadratic Sieve (MPQS)", count := [ 0, 0, 2, 11 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 0, 0, 2, 11 ], name := "Item", next := 2914, root := ~, start := 2859, stop := 2913 ) ], count := [ 0, 0, 2, 2 ], mathmode := "Text", name := "List", next := 2922, root := ~, start := 2682, stop := 2921 ), rec( content := "\n\nIt also contains code by Fra\ nk Lþbeck for making use of Richard P.\nBrent's tables of factors of integers\ of the form ", count := [ 0, 0, 2, 13 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "b^k \\pm 1", count := [ 0, 0, 2, 13 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 0, 0, 2, 13 ], mathmode := "Text", name := "M", next := 3058, root := ~, start := 3042, stop := 3057 ), rec( content := ".\n\n", count := [ 0, 0, 2, 13 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "FactInt", count := [ 0, 0, 2, 13 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 0, 0, 2, 13 ], mathmode := "Text", name := "Package", next := 27, root := ~, start := 1, stop := 26 ), rec( content := " is completely written in the " , count := [ 0, 0, 2, 13 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "GAP", count := [ 0, 0, 2, 13 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 0, 0, 2, 13 ], mathmode := "Text", name := "Package", next := 23, root := ~, start := 1, stop := 22 ), rec( content := " language and contains /\nrequir\ es no external binaries. It needs ", count := [ 0, 0, 2, 13 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "GAPDoc", count := [ 0, 0, 2, 13 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 0, 0, 2, 13 ], mathmode := "Text", name := "Package", next := 3195, root := ~, start := 3170, stop := 3194 ), rec( content := " 1.0\n", count := [ 0, 0, 2, 13 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( Key := "GAPDoc" ), content := 0, count := [ 0, 0, 2, 13 ], mathmode := "Text", name := "Cite", next := 3225, root := ~, start := 3205, stop := 3224 ), rec( content := " or higher. ", count := [ 0, 0, 2, 13 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "FactInt", count := [ 0, 0, 2, 13 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 0, 0, 2, 13 ], mathmode := "Text", name := "Package", next := 27, root := ~, start := 1, stop := 26 ), rec( content := " must be installed in the\n", count := [ 0, 0, 2, 13 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "pkg", count := [ 0, 0, 2, 13 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 0, 0, 2, 13 ], mathmode := "Text", name := "File", next := 3288, root := ~, start := 3272, stop := 3287 ), rec( content := " subdirectory of the ", count := [ 0, 0, 2, 13 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "GAP", count := [ 0, 0, 2, 13 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 0, 0, 2, 13 ], mathmode := "Text", name := "Package", next := 23, root := ~, start := 1, stop := 22 ), rec( content := " distribution.\n\n", count := [ 0, 0, 2, 13 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 0, 0, 2, 1 ], name := "Abstract", next := 3341, root := ~, start := 2455, stop := 3340 ), rec( content := " #######################################\ ############################# ", count := [ 0, 0, 2, 13 ], name := "XMLCOMMENT", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "\n I would like to thank Betti\ na Eick and Steve Linton for their support\n and many interesting discussio\ ns.\n ", count := [ 0, 0, 3, 1 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 0, 0, 3, 1 ], name := "Acknowledgements", next := 3576, root := ~, start := 3424, stop := 3575 ) ], count := [ 0, 0, 0, 1 ], mathmode := "Text", name := "TitlePage", next := 3589, root := ~, start := 780, stop := 3588 ), rec( content := " ###############################################\ ##################### ", count := [ 0, 0, 3, 1 ], mathmode := "Text", name := "XMLCOMMENT", root := ~ ), rec( attributes := rec( ), content := 0, count := [ 0, 0, 4, 1 ], mathmode := "Text", name := "TableOfContents", next := 3688, root := ~, start := 3670, stop := 3687 ), rec( content := " ###############################################\ ##################### ", count := [ 0, 0, 4, 1 ], mathmode := "Text", name := "XMLCOMMENT", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "\n\n", count := [ 0, 0, 4, 1 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( content := " #######################################\ ############################# ", count := [ 0, 0, 4, 1 ], mathmode := "Text", name := "XMLCOMMENT", root := ~ ), rec( content := "\n", count := [ 0, 0, 4, 1 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( content := " ## \ ## ", count := [ 0, 0, 4, 1 ], mathmode := "Text", name := "XMLCOMMENT", root := ~ ), rec( content := "\n", count := [ 0, 0, 4, 1 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( content := " ## preface.xml FactInt document\ ation Stefan Kohl ## ", count := [ 0, 0, 4, 1 ], mathmode := "Text", name := "XMLCOMMENT", root := ~ ), rec( content := "\n", count := [ 0, 0, 4, 1 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( content := " ## \ ## ", count := [ 0, 0, 4, 1 ], mathmode := "Text", name := "XMLCOMMENT", root := ~ ), rec( content := "\n", count := [ 0, 0, 4, 1 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( content := " #######################################\ ############################# ", count := [ 0, 0, 4, 1 ], mathmode := "Text", name := "XMLCOMMENT", root := ~ ), rec( content := "\n\n", count := [ 0, 0, 4, 1 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( Label := "ch:Preface" ), content := [ rec( attributes := rec( ), content := [ rec( content := "Preface", count := [ 1, 0, 0, 2 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 1, 0, 0, 2 ], mathmode := "Text", name := "Heading", next := 4222, root := ~, start := 4196, stop := 4221 ), rec( content := "\n\n", count := [ 1, 0, 0, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( content := " ###############################\ ##################################### ", count := [ 1, 0, 0, 3 ], mathmode := "Text", name := "XMLCOMMENT", root := ~ ), rec( content := "\n\nFactoring large integers is \ a computationally very difficult problem,\nand there is no general factorizati\ on algorithm known which can be used\nfor factoring products of two primes wit\ h more than about 100 decimal\ndigits each on currently existing computers. Bu\ t there are methods\n(not algorithms in the sense that it is guaranteed that t\ hey will give\nthe desired result after a finite number of steps) for factorin\ g integers\nwith prime factors being far beyond the range where trial division\ is\nfeasible. ", count := [ 1, 0, 0, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := 0, count := [ 1, 0, 0, 4 ], mathmode := "Text", name := "P", next := 4811, root := ~, start := 4807, stop := 4810 ), rec( content := "\n\nOne important class of such \ methods is based on exponentiation in\nsuitably chosen groups acting on subset\ s of the ", count := [ 1, 0, 0, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "k", count := [ 1, 0, 0, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 1, 0, 0, 4 ], mathmode := "Text", name := "M", next := 4935, root := ~, start := 4927, stop := 4934 ), rec( content := "-fold cartesian\nproduct of the \ set of residue classes (mod ", count := [ 1, 0, 0, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "n", count := [ 1, 0, 0, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 1, 0, 0, 4 ], mathmode := "Text", name := "M", next := 5002, root := ~, start := 4994, stop := 5001 ), rec( content := "), where ", count := [ 1, 0, 0, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "n", count := [ 1, 0, 0, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 1, 0, 0, 4 ], mathmode := "Text", name := "M", next := 5019, root := ~, start := 5011, stop := 5018 ), rec( content := " denotes\nthe number to be facto\ red.\nRepresentatives of this class are the Elliptic Curves Method (ECM),\nPol\ lard's ", count := [ 1, 0, 0, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "p-1", count := [ 1, 0, 0, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 1, 0, 0, 4 ], mathmode := "Text", name := "M", next := 5148, root := ~, start := 5138, stop := 5147 ), rec( content := " and Williams' ", count := [ 1, 0, 0, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "p+1", count := [ 1, 0, 0, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 1, 0, 0, 4 ], mathmode := "Text", name := "M", next := 5178, root := ~, start := 5168, stop := 5177 ), rec( content := ".\nThese methods have the import\ ant property that they find smaller\nfactors usually considerably faster than \ larger ones.\nThis however comes along with the drawback of suboptimal perform\ ance\nfor large factors. ", count := [ 1, 0, 0, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := 0, count := [ 1, 0, 0, 5 ], mathmode := "Text", name := "P", next := 5391, root := ~, start := 5387, stop := 5390 ), rec( content := "\n\nThe other important class co\ nsists of the so-called factor base methods.\nTheir runtime depends only on th\ e size of the number ", count := [ 1, 0, 0, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "n", count := [ 1, 0, 0, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 1, 0, 0, 5 ], mathmode := "Text", name := "M", next := 5527, root := ~, start := 5519, stop := 5526 ), rec( content := " to be\nfactored, and not on the\ size of its factors.\nFactor base methods compute factorizations of perfect s\ quares\n(mod ", count := [ 1, 0, 0, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "n", count := [ 1, 0, 0, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 1, 0, 0, 5 ], mathmode := "Text", name := "M", next := 5660, root := ~, start := 5652, stop := 5659 ), rec( content := ") over an appropriately chosen f\ actor base.\nA factor base is a set of small prime numbers, or of\n", count := [ 1, 0, 0, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( Key := "prime ideal" ), content := [ rec( content := "prime ideal", count := [ 1, 0, 0, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 1, 0, 0, 5 ], mathmode := "Text", name := "Index", next := 5801, root := ~, start := 5757, stop := 5800 ), rec( content := "\nprime ideals in the case of th\ e\n", count := [ 1, 0, 0, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( Key := "Generalized Number Field Sieve" ), content := [ rec( content := "\n Generalized Number Fi\ eld Sieve\n", count := [ 1, 0, 0, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 1, 0, 0, 5 ], mathmode := "Text", name := "Index", next := 5920, root := ~, start := 5834, stop := 5919 ), rec( content := "\nGeneralized Number Field Sieve\ .\nThe factor base methods use these factorizations to determine a pair of\nin\ tegers ", count := [ 1, 0, 0, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "(x,y)", count := [ 1, 0, 0, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 1, 0, 0, 5 ], mathmode := "Text", name := "M", next := 6046, root := ~, start := 6034, stop := 6045 ), rec( content := " such that ", count := [ 1, 0, 0, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "x^2", count := [ 1, 0, 0, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 1, 0, 0, 5 ], mathmode := "Text", name := "M", next := 6067, root := ~, start := 6057, stop := 6066 ), rec( content := " and ", count := [ 1, 0, 0, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "y^2", count := [ 1, 0, 0, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 1, 0, 0, 5 ], mathmode := "Text", name := "M", next := 6082, root := ~, start := 6072, stop := 6081 ), rec( content := " are congruent\n(mod ", count := [ 1, 0, 0, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "n", count := [ 1, 0, 0, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 1, 0, 0, 5 ], mathmode := "Text", name := "M", next := 6115, root := ~, start := 6107, stop := 6114 ), rec( content := "), but ", count := [ 1, 0, 0, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "\\pm x", count := [ 1, 0, 0, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 1, 0, 0, 5 ], mathmode := "Text", name := "M", next := 6134, root := ~, start := 6122, stop := 6133 ), rec( content := " and ", count := [ 1, 0, 0, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "\\pm y", count := [ 1, 0, 0, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 1, 0, 0, 5 ], mathmode := "Text", name := "M", next := 6151, root := ~, start := 6139, stop := 6150 ), rec( content := " are not.\nIn this situation, ta\ king ", count := [ 1, 0, 0, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "\\gcd(n,x-y)", count := [ 1, 0, 0, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 1, 0, 0, 5 ], mathmode := "Text", name := "M", next := 6205, root := ~, start := 6187, stop := 6204 ), rec( content := " will yield\na nontrivial diviso\ r of ", count := [ 1, 0, 0, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "n", count := [ 1, 0, 0, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 1, 0, 0, 5 ], mathmode := "Text", name := "M", next := 6254, root := ~, start := 6246, stop := 6253 ), rec( content := ".\nRepresentatives of this class\ are the Continued Fraction Algorithm\n(CFRAC), the Multiple Polynomial Quadra\ tic Sieve (MPQS) and the\nalready mentioned Generalized Number Field Sieve (GN\ FS). The latter has\nthe asymptotically lowest average-case complexity of all \ factoring\nmethods known today. It has however the drawback of being more effi\ cient\nthan the MPQS only for numbers with more than about 100 decimal digits,\ \nwhich is probably not within the feasible range of such a function\nimplemen\ ted in ", count := [ 1, 0, 0, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "GAP", count := [ 1, 0, 0, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 1, 0, 0, 5 ], mathmode := "Text", name := "Package", next := 23, root := ~, start := 1, stop := 22 ), rec( content := ".\nThe first two methods are imp\ lemented in this package. ", count := [ 1, 0, 0, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := 0, count := [ 1, 0, 0, 6 ], mathmode := "Text", name := "P", next := 6824, root := ~, start := 6820, stop := 6823 ), rec( content := "\n\nExcept of the ", count := [ 1, 0, 0, 6 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "naive", count := [ 1, 0, 0, 6 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 1, 0, 0, 6 ], mathmode := "Text", name := "Q", next := 6852, root := ~, start := 6840, stop := 6851 ), rec( content := " methods like trial division and\ some\n", count := [ 1, 0, 0, 6 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "historical", count := [ 1, 0, 0, 6 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 1, 0, 0, 6 ], mathmode := "Text", name := "Q", next := 6907, root := ~, start := 6890, stop := 6906 ), rec( content := " methods, the only method which \ I am aware of\nthat does not fit into one of the two classes mentioned above i\ s\n", count := [ 1, 0, 0, 6 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( Key := "Pollard's Rho" ) , content := [ rec( content := "Pollard's Rho", count := [ 1, 0, 0, 6 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 1, 0, 0, 6 ], mathmode := "Text", name := "Index", next := 7066, root := ~, start := 7018, stop := 7065 ), rec( content := "\nPollard's Rho, which is alread\ y implemented in the ", count := [ 1, 0, 0, 6 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "GAP", count := [ 1, 0, 0, 6 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 1, 0, 0, 6 ], mathmode := "Text", name := "Package", next := 23, root := ~, start := 1, stop := 22 ), rec( content := " Library. ", count := [ 1, 0, 0, 6 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := 0, count := [ 1, 0, 0, 7 ], mathmode := "Text", name := "P", next := 7137, root := ~, start := 7133, stop := 7136 ), rec( content := "\n\nWith respect to the current \ state-of-the-art in integer factorization,\nsee the\n", count := [ 1, 0, 0, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( Key := "RSA Factoring Challenge" ), content := [ rec( content := "RSA Factoring Challenge" , count := [ 1, 0, 0, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 1, 0, 0, 7 ], mathmode := "Text", name := "Index", next := 7286, root := ~, start := 7218, stop := 7285 ), rec( content := "\n", count := [ 1, 0, 0, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( Text := "Factoring Challenge" ), content := [ rec( content := "\nhttp://www.rsasecurity.\ com/rsalabs/node.asp?id=2093", count := [ 1, 0, 0, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 1, 0, 0, 7 ], mathmode := "Text", name := "URL", next := 7377, root := ~, start := 7287, stop := 7376 ), rec( content := "\nof the RSA Laboratories.\n\n" , count := [ 1, 0, 0, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( content := " ###############################\ ##################################### ", count := [ 1, 0, 0, 7 ], mathmode := "Text", name := "XMLCOMMENT", root := ~ ), rec( content := "\n\n", count := [ 1, 0, 0, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 1, 0, 0, 1 ], mathmode := "Text", name := "Chapter", next := 7493, root := ~, start := 4168, stop := 7492 ), rec( content := "\n\n", count := [ 1, 0, 0, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( content := " #######################################\ ############################# ", count := [ 1, 0, 0, 7 ], mathmode := "Text", name := "XMLCOMMENT", root := ~ ), rec( content := "\n\n", count := [ 1, 0, 0, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( content := " #######################################\ ############################# ", count := [ 1, 0, 0, 7 ], mathmode := "Text", name := "XMLCOMMENT", root := ~ ), rec( content := "\n", count := [ 1, 0, 0, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( content := " ## \ ## ", count := [ 1, 0, 0, 7 ], mathmode := "Text", name := "XMLCOMMENT", root := ~ ), rec( content := "\n", count := [ 1, 0, 0, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( content := " ## general.xml FactInt document\ ation Stefan Kohl ## ", count := [ 1, 0, 0, 7 ], mathmode := "Text", name := "XMLCOMMENT", root := ~ ), rec( content := "\n", count := [ 1, 0, 0, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( content := " ## \ ## ", count := [ 1, 0, 0, 7 ], mathmode := "Text", name := "XMLCOMMENT", root := ~ ), rec( content := "\n", count := [ 1, 0, 0, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( content := " #######################################\ ############################# ", count := [ 1, 0, 0, 7 ], mathmode := "Text", name := "XMLCOMMENT", root := ~ ), rec( content := "\n\n", count := [ 1, 0, 0, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( Label := "ch:General" ), content := [ rec( content := "\n", count := [ 2, 0, 0, 1 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "The General Factorization\ Routine", count := [ 2, 0, 0, 2 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 0, 0, 2 ], mathmode := "Text", name := "Heading", next := 8046, root := ~, start := 7994, stop := 8045 ), rec( content := "\n\n", count := [ 2, 0, 0, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( content := " ###############################\ ##################################### ", count := [ 2, 0, 0, 3 ], mathmode := "Text", name := "XMLCOMMENT", root := ~ ), rec( content := "\n\n", count := [ 2, 0, 0, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( Label := "sec:Factors" ) , content := [ rec( content := "\n", count := [ 2, 1, 0, 1 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "The method for ", count := [ 2, 1, 0, 2 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "Factors", count := [ 2, 1, 0, 2 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 1, 0, 2 ], mathmode := "Text", name := "C", next := 8195, root := ~, start := 8181, stop := 8194 ) ], count := [ 2, 1, 0, 2 ], mathmode := "Text", name := "Heading", next := 8205, root := ~, start := 8157, stop := 8204 ), rec( content := "\n\nThe ", count := [ 2, 1, 0, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "FactInt", count := [ 2, 1, 0, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 1, 0, 3 ], mathmode := "Text", name := "Package", next := 27, root := ~, start := 1, stop := 26 ), rec( content := " package provides a bett\ er method for the operation\n", count := [ 2, 1, 0, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "Factors", count := [ 2, 1, 0, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 1, 0, 3 ], mathmode := "Text", name := "C", next := 8286, root := ~, start := 8272, stop := 8285 ), rec( content := " for integer arguments, \ which supersedes the one included in\nthe ", count := [ 2, 1, 0, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "GAP", count := [ 2, 1, 0, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 1, 0, 3 ], mathmode := "Text", name := "Package", next := 23, root := ~, start := 1, stop := 22 ), rec( content := " Library:\n\n", count := [ 2, 1, 0, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( attributes := rec( Arg := "n", Label := "FactInt's meth\ od, for integers", Name := "Factors" ), content := 0, count := [ 2, 1, 1, 2 ], mathmode := "Text", name := "Meth", next := 8451, root := ~, start := 8382, stop := 8450 ), rec( attributes := rec( ), content := [ rec( content := "\n A s\ orted list of the prime factors of ", count := [ 2, 1, 1, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "n\ ", count := [ 2, 1, 1, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 1, 1, 3 ], mathmode := "Text", name := "A", next := 8514, root := ~, start := 8506, stop := 8513 ), rec( content := ".\n ", count := [ 2, 1, 1, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 1, 1, 3 ], mathmode := "Text", name := "Returns", next := 8528, root := ~, start := 8454, stop := 8527 ), rec( attributes := rec( ), content := [ rec( content := "\n ", count := [ 2, 1, 1, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( Key := "primalit\ y of the factors" ), content := [ rec( content := "primality of the factors", count := [ 2, 1, 1, 3 ], mathmode := \ "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 1, 1, 3 ], mathmode := "Text", name := "Index", next := 8619, root := ~, start := 8549, stop := 8618 ), rec( content := "\n Th\ e returned factors pass the built-in probabilistic primality test of\n ", count := [ 2, 1, 1, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "G\ AP", count := [ 2, 1, 1, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 1, 1, 3 ], mathmode := "Text", name := "Package", next := 23, root := ~, start := 1, stop := 22 ), rec( content := " (", count := [ 2, 1, 1, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "I\ sProbablyPrimeInt", count := [ 2, 1, 1, 3 ], mathmode := "Text", name := "PCDA\ TA", root := ~ ) ], count := [ 2, 1, 1, 3 ], mathmode := "Text", name := "C", next := 8731, root := ~, start := 8706, stop := 8730 ), rec( content := ", Bailli\ e-PSW Primality Test; see the\n ", count := [ 2, 1, 1, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "G\ AP", count := [ 2, 1, 1, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 1, 1, 3 ], mathmode := "Text", name := "Package", next := 23, root := ~, start := 1, stop := 22 ), rec( content := " Referen\ ce Manual).\n If the method fails to compute the prime factorization of ", count := [ 2, 1, 1, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "n\ ", count := [ 2, 1, 1, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 1, 1, 3 ], mathmode := "Text", name := "A", next := 8868, root := ~, start := 8860, stop := 8867 ), rec( content := ",\n a\ n error is signalled.\n The same holds for all other factorization routines\ provided by this\n package.\n It follows a rough description how the fa\ ctorization method works: ", count := [ 2, 1, 1, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := 0, count := [ 2, 1, 1, 4 ], mathmode := "Text", name := "P", next := 9058, root := ~, start := 9054, stop := 9057 ), rec( content := "\n\n \ First of all, the method checks whether ", count := [ 2, 1, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "n\ = b^k \\pm 1", count := [ 2, 1, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 1, 1, 4 ], mathmode := "Text", name := "M", next := 9124, root := ~, start := 9104, stop := 9123 ), rec( content := " for som\ e\n ", count := [ 2, 1, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "b\ ", count := [ 2, 1, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 1, 1, 4 ], mathmode := "Text", name := "M", next := 9146, root := ~, start := 9138, stop := 9145 ), rec( content := ", ", count := [ 2, 1, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "k\ ", count := [ 2, 1, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 1, 1, 4 ], mathmode := "Text", name := "M", next := 9156, root := ~, start := 9148, stop := 9155 ), rec( content := " and loo\ ks for factors corresponding to polynomial\n factors of ", count := [ 2, 1, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "x\ ^k \\pm 1", count := [ 2, 1, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 1, 1, 4 ], mathmode := "Text", name := "M", next := 9238, root := ~, start := 9222, stop := 9237 ), rec( content := ".\n P\ rovided that ", count := [ 2, 1, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "b\ ", count := [ 2, 1, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 1, 1, 4 ], mathmode := "Text", name := "M", next := 9266, root := ~, start := 9258, stop := 9265 ), rec( content := " and ", count := [ 2, 1, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "k\ ", count := [ 2, 1, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 1, 1, 4 ], mathmode := "Text", name := "M", next := 9279, root := ~, start := 9271, stop := 9278 ), rec( content := " are not\ too large, the factors that\n do not correspond to polynomial factors are \ taken from Richard P. Brent's\n Factor Tables ", count := [ 2, 1, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( Key := "Brent04"\ ), content := 0, count := [ 2, 1, 1, 4 ], mathmode := "Text", name := "Cite", next := 9438, root := ~, start := 9417, stop := 9437 ), rec( content := ".\n T\ he code for accessing these tables has been contributed by Frank Lþbeck.\n \ ", count := [ 2, 1, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ) , rec( attributes := rec( ), content := 0, count := [ 2, 1, 1, 5 ], mathmode := "Text", name := "P", next := 9527, root := ~, start := 9523, stop := 9526 ), rec( content := "\n\n \ Then the method uses trial division and a number of cheap methods for\n var\ ious common special cases.\n After the small and other ", count := [ 2, 1, 1, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "e\ asy", count := [ 2, 1, 1, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 1, 1, 5 ], mathmode := "Text", name := "Q", next := 9678, root := ~, start := 9667, stop := 9677 ), rec( content := " factors\ have been found this way,\n ", count := [ 2, 1, 1, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "F\ actInt", count := [ 2, 1, 1, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 1, 1, 5 ], mathmode := "Text", name := "Package", next := 27, root := ~, start := 1, stop := 26 ), rec( content := "'s metho\ d searches for ", count := [ 2, 1, 1, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "m\ edium-sized", count := [ 2, 1, 1, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 1, 1, 5 ], mathmode := "Text", name := "Q", next := 9768, root := ~, start := 9749, stop := 9767 ), rec( content := " factors\ using\n Pollard's Rho (by the library function ", count := [ 2, 1, 1, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "F\ actorsRho", count := [ 2, 1, 1, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 1, 1, 5 ], mathmode := "Text", name := "C", next := 9843, root := ~, start := 9826, stop := 9842 ), rec( content := ", see th\ e ", count := [ 2, 1, 1, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "G\ AP", count := [ 2, 1, 1, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 1, 1, 5 ], mathmode := "Text", name := "Package", next := 23, root := ~, start := 1, stop := 22 ), rec( content := "\n Re\ ference Manual), Pollard's ", count := [ 2, 1, 1, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "p\ -1", count := [ 2, 1, 1, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 1, 1, 5 ], mathmode := "Text", name := "M", next := 9907, root := ~, start := 9897, stop := 9906 ), rec( content := "\n (s\ ee ", count := [ 2, 1, 1, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( Func := "Factors\ Pminus1", Label := "Pollard's p-1" ), content := 0, count := [ 2, 1, 1, 5 ], mathmode := "Text", name := "Ref", next := 9972, root := ~, start := 9922, stop := 9971 ), rec( content := "),\n \ Williams' ", count := [ 2, 1, 1, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "p\ +1", count := [ 2, 1, 1, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 1, 1, 5 ], mathmode := "Text", name := "M", next := 10004, root := ~, start := 9994, stop := 10003 ), rec( content := "\n (s\ ee ", count := [ 2, 1, 1, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( Func := "Factors\ Pplus1", Label := "Williams' p+1" ), content := 0, count := [ 2, 1, 1, 5 ], mathmode := "Text", name := "Ref", next := 10068, root := ~, start := 10019, stop := 10067 ), rec( content := ")\n a\ nd the Elliptic Curves Method (ECM, \n see ", count := [ 2, 1, 1, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( Func := "Factors\ ECM", Label := "Elliptic Curves Method, ECM" ), content := 0, count := [ 2, 1, 1, 5 ], mathmode := "Text", name := "Ref", next := 10185, root := ~, start := 10125, stop := 10184 ), rec( content := ")\n i\ n this order. ", count := [ 2, 1, 1, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := 0, count := [ 2, 1, 1, 6 ], mathmode := "Text", name := "P", next := 10210, root := ~, start := 10206, stop := 10209 ), rec( content := "\n\n \ If there is still an unfactored part remaining after that,\n it is factored\ using the Multiple Polynomial Quadratic Sieve (MPQS,\n see ", count := [ 2, 1, 1, 6 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( Func := "Factors\ MPQS", Label := "Multiple Polynomial Quadratic Sieve, MPQS" ), content := 0, count := [ 2, 1, 1, 6 ], mathmode := "Text", name := "Ref", next := 10453, root := ~, start := 10360, stop := 10452 ), rec( content := ").\n \ ", count := [ 2, 1, 1, 6 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := 0, count := [ 2, 1, 1, 7 ], mathmode := "Text", name := "P", next := 10464, root := ~, start := 10460, stop := 10463 ), rec( content := "\n\n \ The following options are interpreted:\n\n ", count := [ 2, 1, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( attributes :=\ rec( ), content := [ rec( attributes := rec( ), content := [ rec( content :\ = "TDHints", count := [ 2, 1, 1, 8 ], mathmode := "Text", name := "PCDATA", ro\ ot := ~ ) ], count := [ 2, 1, 1, 8 ], mathmode := "Text", name := "A", next :=\ 10547, root := ~, start := 10533, stop := 10546 ) ], count := [ 2, 1, 1, 8 ], name := "Mar\ k", next := 10554, root := ~, start := 10527, stop := 10553 ), rec( attributes :\ = rec( ), content := [ rec( content := "\n A list of additional trial \ divisors.\n This is useful only if certain primes ", count := [ 2, 1, \ 1, 9 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := re\ c( ), content := [ rec( content := "p", count := [ 2, 1, 1, 9 ], mathmode := \ "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 1, 1, 9 ], mathmode := \ "Text", name := "M", next := 10672, root := ~, start := 10664, stop := 10671 ) , rec( cont\ ent := " are expected to\n divide ", count := [ 2, 1, 1, 9 ], mathmode \ := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content \ := [ rec( content := "n", count := [ 2, 1, 1, 9 ], mathmode := "Text", name :=\ "PCDATA", root := ~ ) ], count := [ 2, 1, 1, 9 ], mathmode := "Text", name :=\ "M", next := 10712, root := ~, start := 10704, stop := 10711 ), rec( content \ := " with probability significantly larger than\n ", count := [ 2, 1, 1\ , 9 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := re\ c( ), content := [ rec( content := "\\frac{1}{p}", count := [ 2, 1, 1, 9 ], m\ athmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 1, 1, 9 ], math\ mode := "Text", name := "M", next := 10782, root := ~, start := 10764, stop :=\ 10781 ), rec( content := ".\n ", count := [ 2, 1, 1, 9 ], mathmode := "T\ ext", name := "PCDATA", root := ~ ) ], count := [ 2, 1, 1, 9 ], name := "Item" , next := 1079\ 7, root := ~, start := 10561, stop := 10796 ), rec( attributes := rec( ), content := [ rec( attr\ ibutes := rec( ), content := [ rec( content := "RhoSteps", count := [ 2, 1, 1\ , 10 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 1, \ 1, 10 ], mathmode := "Text", name := "A", next := 10825, root := ~, start := 1\ 0810, stop := 10824 ) ], count := [ 2, 1, 1, 10 ], name := "Mark", next := 1083\ 2, root := ~, start := 10804, stop := 10831 ), rec( attributes := rec( ), content := [ rec( cont\ ent := "\n The number of steps for Pollard's Rho.\n ", count := [ \ 2, 1, 1, 11 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 1, 1, 11 ], name := "Ite\ m", next := 10906, root := ~, start := 10839, stop := 10905 ), rec( attributes :\ = rec( ), content := [ rec( attributes := rec( ), content := [ rec( content \ := "RhoCluster", count := [ 2, 1, 1, 12 ], mathmode := "Text", name := "PCDATA\ ", root := ~ ) ], count := [ 2, 1, 1, 12 ], mathmode := "Text", name := "A", next\ := 10936, root := ~, start := 10919, stop := 10935 ) ], count := [ 2, 1, 1, 12 ], name := "Mar\ k", next := 10943, root := ~, start := 10913, stop := 10942 ), rec( attributes :\ = rec( ), content := [ rec( content := "\n The number of steps between\ two gcd computations in Pollard's Rho.\n ", count := [ 2, 1, 1, 13 ], math\ mode := "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 1, 1, 13 ], name := "Ite\ m", next := 11045, root := ~, start := 10950, stop := 11044 ), rec( attributes :\ = rec( ), content := [ rec( attributes := rec( ), content := [ rec( content \ := "Pminus1Limit1", count := [ 2, 1, 1, 14 ], mathmode := "Text", name := "PCD\ ATA", root := ~ ) ], count := [ 2, 1, 1, 14 ], mathmode := "Text", name := "A" , next\ := 11078, root := ~, start := 11058, stop := 11077 ), rec( content := " / ", coun\ t := [ 2, 1, 1, 14 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attr\ ibutes := rec( ), content := [ rec( content := "Pminus1Limit2", count := [ 2,\ 1, 1, 14 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 2\ , 1, 1, 14 ], mathmode := "Text", name := "A", next := 11101, root := ~, start\ := 11081, stop := 11100 ) ], count := [ 2, 1, 1, 14 ], name := "Mark", next := 1110\ 8, root := ~, start := 11052, stop := 11107 ), rec( attributes := rec( ), content := [ rec( cont\ ent := "\n The first- / second stage limit for Pollard's ", count := [ \ 2, 1, 1, 15 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attribu\ tes := rec( ), content := [ rec( content := "p-1", count := [ 2, 1, 1, 15 ], \ mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 1, 1, 15 ], math\ mode := "Text", name := "M", next := 11191, root := ~, start := 11181, stop :=\ 11190 ), rec( content := "\n (see ", count := [ 2, 1, 1, 15 ], mathmo\ de := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( Func := "\ FactorsPminus1", Label := "Pollard's p-1" ), content := 0, count := [ 2, 1, 1,\ 15 ], mathmode := "Text", name := "Ref", next := 11260, root := ~, start := 1\ 1210, stop := 11259 ), rec( content := ").\n ", count := [ 2, 1, 1, 15 ], math\ mode := "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 1, 1, 15 ], name := "Ite\ m", next := 11276, root := ~, start := 11115, stop := 11275 ), rec( attributes :\ = rec( ), content := [ rec( attributes := rec( ), content := [ rec( content \ := "Pplus1Residues", count := [ 2, 1, 1, 16 ], mathmode := "Text", name := "PC\ DATA", root := ~ ) ], count := [ 2, 1, 1, 16 ], mathmode := "Text", name := "A\ ", next := 11310, root := ~, start := 11289, stop := 11309 ) ], count := [ 2, 1, 1, 16 ], name := "Mar\ k", next := 11317, root := ~, start := 11283, stop := 11316 ), rec( attributes :\ = rec( ), content := [ rec( content := "\n The number of residues to b\ e tried by Williams' ", count := [ 2, 1, 1, 17 ], mathmode := "Text", name :=\ "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content \ := "p+1", count := [ 2, 1, 1, 17 ], mathmode := "Text", name := "PCDATA", root\ := ~ ) ], count := [ 2, 1, 1, 17 ], mathmode := "Text", name := "M", next := \ 11402, root := ~, start := 11392, stop := 11401 ), rec( content := "\n \ (see ", count := [ 2, 1, 1, 17 ], mathmode := "Text", name := "PCDATA", root \ := ~ ), rec( attributes := rec( Func := "FactorsPplus1", Label := "Williams' p\ +1" ), content := 0, count := [ 2, 1, 1, 17 ], mathmode := "Text", name := "Re\ f", next := 11470, root := ~, start := 11421, stop := 11469 ), rec( content :=\ ").\n ", count := [ 2, 1, 1, 17 ], mathmode := "Text", name := "PCDATA", root\ := ~ ) ], count := [ 2, 1, 1, 17 ], name := "Item", next := 11486, root := ~, start := 113\ 24, stop := 11485 ), rec( attributes := rec( ), content := [ rec( attributes \ := rec( ), content := [ rec( content := "Pplus1Limit1", count := [ 2, 1, 1, 1\ 8 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 1, 1, \ 18 ], mathmode := "Text", name := "A", next := 11518, root := ~, start := 1149\ 9, stop := 11517 ), rec( content := " / ", count := [ 2, 1, 1, 18 ], mathmode \ := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content \ := [ rec( content := "Pplus1Limit2", count := [ 2, 1, 1, 18 ], mathmode := "Te\ xt", name := "PCDATA", root := ~ ) ], count := [ 2, 1, 1, 18 ], mathmode := "T\ ext", name := "A", next := 11540, root := ~, start := 11521, stop := 11539 ) ] , count := [ 2, 1, 1, 18 ], name := "Mar\ k", next := 11547, root := ~, start := 11493, stop := 11546 ), rec( attributes :\ = rec( ), content := [ rec( content := "\n The first- / second stage l\ imit for Williams' ", count := [ 2, 1, 1, 19 ], mathmode := "Text", name := "\ PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content :=\ "p+1", count := [ 2, 1, 1, 19 ], mathmode := "Text", name := "PCDATA", root :\ = ~ ) ], count := [ 2, 1, 1, 19 ], mathmode := "Text", name := "M", next := 11\ 630, root := ~, start := 11620, stop := 11629 ), rec( content := "\n (s\ ee ", count := [ 2, 1, 1, 19 ], mathmode := "Text", name := "PCDATA", root :=\ ~ ), rec( attributes := rec( Func := "FactorsPplus1", Label := "Williams' p+1\ " ), content := 0, count := [ 2, 1, 1, 19 ], mathmode := "Text", name := "Ref" , next\ := 11698, root := ~, start := 11649, stop := 11697 ), rec( content := ").\n \ ", count := [ 2, 1, 1, 19 ], mathmode := "Text", name := "PCDATA", root :=\ ~ ) ], count := [ 2, 1, 1, 19 ], name := "Item", next := 11714, root := ~, start := 115\ 54, stop := 11713 ), rec( attributes := rec( ), content := [ rec( attributes \ := rec( ), content := [ rec( content := "ECMCurves", count := [ 2, 1, 1, 20 ]\ , mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 1, 1, 20 ] , math\ mode := "Text", name := "A", next := 11743, root := ~, start := 11727, stop :=\ 11742 ) ], count := [ 2, 1, 1, 20 ], name := "Mark", next := 11750, root := ~, start := 117\ 21, stop := 11749 ), rec( attributes := rec( ), content := [ rec( content := \ "\n The number of elliptic curves to be tried by the\n Elliptic \ Curves Method (ECM)\n (see ", count := [ 2, 1, 1, 21 ], mathmode := "T\ ext", name := "PCDATA", root := ~ ), rec( attributes := rec( Func := "FactorsE\ CM", Label := "Elliptic Curves Method, ECM" ), content := 0, count := [ 2, 1, \ 1, 21 ], mathmode := "Text", name := "Ref", next := 11959, root := ~, start :=\ 11876, stop := 11958 ), rec( content := ").\n Also admissible: a funct\ ion that takes the number ", count := [ 2, 1, 1, 21 ], mathmode := "Text", name\ := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( conte\ nt := "n", count := [ 2, 1, 1, 21 ], mathmode := "Text", name := "PCDATA", roo\ t := ~ ) ], count := [ 2, 1, 1, 21 ], mathmode := "Text", name := "M", next :=\ 12028, root := ~, start := 12020, stop := 12027 ), rec( content := " to be\n \ factored as an argument and returns the desired number\n of curv\ es to be tried.\n ", count := [ 2, 1, 1, 21 ], mathmode := "Text", name :\ = "PCDATA", root := ~ ) ], count := [ 2, 1, 1, 21 ], name := "Item", next := 1214\ 2, root := ~, start := 11757, stop := 12141 ), rec( attributes := rec( ), content := [ rec( attr\ ibutes := rec( ), content := [ rec( content := "ECMLimit1", count := [ 2, 1, \ 1, 22 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 1,\ 1, 22 ], mathmode := "Text", name := "A", next := 12171, root := ~, start := \ 12155, stop := 12170 ), rec( content := " / ", count := [ 2, 1, 1, 22 ], mathm\ ode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), cont\ ent := [ rec( content := "ECMLimit2", count := [ 2, 1, 1, 22 ], mathmode := "T\ ext", name := "PCDATA", root := ~ ) ], count := [ 2, 1, 1, 22 ], mathmode := "\ Text", name := "A", next := 12190, root := ~, start := 12174, stop := 12189 ) ], count := [ 2, 1, 1, 22 ], name := "Mar\ k", next := 12197, root := ~, start := 12149, stop := 12196 ), rec( attributes :\ = rec( ), content := [ rec( content := "\n The initial first- / second\ stage limit for ECM\n (see ", count := [ 2, 1, 1, 23 ], mathmode := "\ Text", name := "PCDATA", root := ~ ), rec( attributes := rec( Func := "Factors\ ECM", Label := "Elliptic Curves Method, ECM" ), content := 0, count := [ 2, 1,\ 1, 23 ], mathmode := "Text", name := "Ref", next := 12368, root := ~, start :\ = 12285, stop := 12367 ), rec( content := ").\n ", count := [ 2, 1, 1, 23\ ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 1, 1, 23 ], name := "Ite\ m", next := 12384, root := ~, start := 12204, stop := 12383 ), rec( attributes :\ = rec( ), content := [ rec( attributes := rec( ), content := [ rec( content \ := "ECMDelta", count := [ 2, 1, 1, 24 ], mathmode := "Text", name := "PCDATA",\ root := ~ ) ], count := [ 2, 1, 1, 24 ], mathmode := "Text", name := "A", next\ := 12412, root := ~, start := 12397, stop := 12411 ) ], count := [ 2, 1, 1, 24 ], name := "Mar\ k", next := 12419, root := ~, start := 12391, stop := 12418 ), rec( attributes :\ = rec( ), content := [ rec( content := "\n The increment per curve for\ the first\n stage limit in ECM. The second stage limit is adjusted app\ ropriately\n (see ", count := [ 2, 1, 1, 25 ], mathmode := "Text", name\ := "PCDATA", root := ~ ), rec( attributes := rec( Func := "FactorsECM", Label\ := "Elliptic Curves Method, ECM" ), content := 0, count := [ 2, 1, 1, 25 ], math\ mode := "Text", name := "Ref", next := 12657, root := ~, start := 12574, stop \ := 12656 ), rec( content := ").\n ", count := [ 2, 1, 1, 25 ], mathmode :\ = "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 1, 1, 25 ], name := "Ite\ m", next := 12673, root := ~, start := 12426, stop := 12672 ), rec( attributes :\ = rec( ), content := [ rec( attributes := rec( ), content := [ rec( content \ := "ECMDeterministic", count := [ 2, 1, 1, 26 ], mathmode := "Text", name := "\ PCDATA", root := ~ ) ], count := [ 2, 1, 1, 26 ], mathmode := "Text", name := \ "A", next := 12709, root := ~, start := 12686, stop := 12708 ) ], count := [ 2, 1, 1, 26 ], name := "Mar\ k", next := 12716, root := ~, start := 12680, stop := 12715 ), rec( attributes :\ = rec( ), content := [ rec( content := "\n If true, ECM chooses its cu\ rves deterministically, i.e. repeatable\n (see ", count := [ 2, 1, 1, \ 27 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := re\ c( Func := "FactorsECM", Label := "Elliptic Curves Method, ECM" ), content := \ 0, count := [ 2, 1, 1, 27 ], mathmode := "Text", name := "Ref", next := 12906, root\ := ~, start := 12823, stop := 12905 ), rec( content := ").\n ", count :=\ [ 2, 1, 1, 27 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 1, 1, 27 ], name := "Ite\ m", next := 12922, root := ~, start := 12723, stop := 12921 ), rec( attributes :\ = rec( ), content := [ rec( attributes := rec( ), content := [ rec( content \ := "FBMethod", count := [ 2, 1, 1, 28 ], mathmode := "Text", name := "PCDATA",\ root := ~ ) ], count := [ 2, 1, 1, 28 ], mathmode := "Text", name := "A", next\ := 12950, root := ~, start := 12935, stop := 12949 ) ], count := [ 2, 1, 1, 28 ], name := "Mar\ k", next := 12957, root := ~, start := 12929, stop := 12956 ), rec( attributes :\ = rec( ), content := [ rec( content := "\n Specifies which of the fact\ or base methods should be\n used to do the ", count := [ 2, 1, 1, 29 ], math\ mode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), cont\ ent := [ rec( content := "hard work", count := [ 2, 1, 1, 29 ], mathmode := "T\ ext", name := "PCDATA", root := ~ ) ], count := [ 2, 1, 1, 29 ], mathmode := "\ Text", name := "Q", next := 13071, root := ~, start := 13055, stop := 13070 ), rec( cont\ ent := ". Currently implemented:\n ", count := [ 2, 1, 1, 29 ], mathmod\ e := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), conten\ t := [ rec( content := "\"CFRAC\"", count := [ 2, 1, 1, 29 ], mathmode := "Tex\ t", name := "PCDATA", root := ~ ) ], count := [ 2, 1, 1, 29 ], mathmode := "Te\ xt", name := "C", next := 13118, root := ~, start := 13104, stop := 13117 ), rec( cont\ ent := " and ", count := [ 2, 1, 1, 29 ], mathmode := "Text", name := "PCDATA" , root\ := ~ ), rec( attributes := rec( ), content := [ rec( content := "\"MPQS\"", \ count := [ 2, 1, 1, 29 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], coun\ t := [ 2, 1, 1, 29 ], mathmode := "Text", name := "C", next := 13136, root := \ ~, start := 13123, stop := 13135 ), rec( content := "\n (see ", count \ := [ 2, 1, 1, 29 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attr\ ibutes := rec( Func := "FactorsCFRAC", Label := "Continued Fraction Algorithm,\ CFRAC" ), content := 0, count := [ 2, 1, 1, 29 ], mathmode := "Text", name :=\ "Ref", next := 13247, root := ~, start := 13155, stop := 13246 ), rec( conten\ t := "\n and ", count := [ 2, 1, 1, 29 ], mathmode := "Text", name := \ "PCDATA", root := ~ ), rec( attributes := rec( Func := "FactorsMPQS", Label :=\ "Multiple Polynomial Quadratic Sieve, MPQS" ), content := 0, count := [ 2, 1,\ 1, 29 ], mathmode := "Text", name := "Ref", next := 13362, root := ~, start :\ = 13265, stop := 13361 ), rec( content := ",\n respectively).\n \ Default: ", count := [ 2, 1, 1, 29 ], mathmode := "Text", name := "PCDATA", root\ := ~ ), rec( attributes := rec( ), content := [ rec( content := "\"MPQS\"", \ count := [ 2, 1, 1, 29 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], coun\ t := [ 2, 1, 1, 29 ], mathmode := "Text", name := "C", next := 13417, root := \ ~, start := 13404, stop := 13416 ), rec( content := ".\n ", count := [ 2,\ 1, 1, 29 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 1, 1, 29 ], name := "Ite\ m", next := 13432, root := ~, start := 12964, stop := 13431 ) ], count := [ 2, 1, 1, 8 ], mathmode := "Text", name := "List", next := 13444, root := ~, start := 10514, stop := 13443 ), rec( content := "\n\n \ For the use of the ", count := [ 2, 1, 1, 31 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "G\ AP", count := [ 2, 1, 1, 31 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 1, 1, 31 ], mathmode := "Text", name := "Package", next := 23, root := ~, start := 1, stop := 22 ), rec( content := " Options\ Stack, see Chapter ", count := [ 2, 1, 1, 31 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "O\ ptions Stack", count := [ 2, 1, 1, 31 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 1, 1, 31 ], mathmode := "Text", name := "E", next := 13522, root := ~, start := 13502, stop := 13521 ), rec( content := "\n in\ the ", count := [ 2, 1, 1, 31 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "G\ AP", count := [ 2, 1, 1, 31 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 1, 1, 31 ], mathmode := "Text", name := "Package", next := 23, root := ~, start := 1, stop := 22 ), rec( content := " Referen\ ce Manual. ", count := [ 2, 1, 1, 31 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := 0, count := [ 2, 1, 1, 32 ], mathmode := "Text", name := "P", next := 13562, root := ~, start := 13558, stop := 13561 ), rec( content := "\n\n \ Setting ", count := [ 2, 1, 1, 32 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "R\ hoSteps", count := [ 2, 1, 1, 32 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 1, 1, 32 ], mathmode := "Text", name := "A", next := 13591, root := ~, start := 13576, stop := 13590 ), rec( content := ", ", count := [ 2, 1, 1, 32 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "P\ minus1Limit1", count := [ 2, 1, 1, 32 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 1, 1, 32 ], mathmode := "Text", name := "A", next := 13613, root := ~, start := 13593, stop := 13612 ), rec( content := ", ", count := [ 2, 1, 1, 32 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "P\ plus1Residues", count := [ 2, 1, 1, 32 ], mathmode := "Text", name := "PCDATA" , root := ~ ) ], count := [ 2, 1, 1, 32 ], mathmode := "Text", name := "A", next := 13636, root := ~, start := 13615, stop := 13635 ), rec( content := ",\n " , count := [ 2, 1, 1, 32 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "P\ plus1Limit1", count := [ 2, 1, 1, 32 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 1, 1, 32 ], mathmode := "Text", name := "A", next := 13661, root := ~, start := 13642, stop := 13660 ), rec( content := ", ", count := [ 2, 1, 1, 32 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "E\ CMCurves", count := [ 2, 1, 1, 32 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 1, 1, 32 ], mathmode := "Text", name := "A", next := 13679, root := ~, start := 13663, stop := 13678 ), rec( content := " or ", count := [ 2, 1, 1, 32 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "E\ CMLimit1", count := [ 2, 1, 1, 32 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 1, 1, 32 ], mathmode := "Text", name := "A", next := 13699, root := ~, start := 13683, stop := 13698 ), rec( content := " equal t\ o zero\n switches the respective method off. The method chooses defaults fo\ r all\n option values that are not explicitly set by the user. The option v\ alues\n are also interpreted by the routines for the particular factorizati\ on\n methods described in the next chapter.\n", count := [ 2, 1, 1, 32 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "\\ n\ngap> Factors( Factorial(44) + 1 );\n[ 694763, 9245226412016162109253, 41385\ 2053257739876455072359 ]\ngap> Factors( 2^997 - 1 );\n[ 1675608165140848194887\ 37767976263150405095191554732902607, \n 7993430605360222292860936960123884061\ 9880168466272137576868879760059\\\n3002563860297371289151859287894468775962208\ 410650878341385577817736702\\\n21588789207414137008681823014104391780495338280\ 82651513160945607018874\\\n830040978453228378816647358334681553 ]\n\n", count := [ 2, 1, 1, 33 ], name := "PCD\ ATA", root := ~ ) ], count := [ 2, 1, 1, 33 ], mathmode := "Text", name := "Example", next := 14461, root := ~, start := 13984, stop := 14460 ), rec( content := "\n ", count := [ 2, 1, 1, 34 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 1, 1, 3 ], mathmode := "Text", name := "Description", next := 14478, root := ~, start := 8531, stop := 14477 ) ], count := [ 2, 1, 1, 1 ], mathmode := "Text", name := "ManSection", next := 14492, root := ~, start := 8367, stop := 14491 ), rec( content := "\n\nThe above method for\ ", count := [ 2, 1, 1, 34 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "Factors", count := [ 2, 1, 1, 34 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 1, 1, 34 ], mathmode := "Text", name := "C", next := 14529, root := ~, start := 14515, stop := 14528 ), rec( content := " calls the following fun\ ction,\nwhich is the actual ", count := [ 2, 1, 1, 34 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "working horse", count := [ 2, 1, 1, 34 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 1, 1, 34 ], mathmode := "Text", name := "Q", next := 14600, root := ~, start := 14580, stop := 14599 ), rec( content := " of this package:\n\n", count := [ 2, 1, 1, 34 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( attributes := rec( Arg := "n", Label := "factorization \ of an integer", Name := "FactInt" ), content := 0, count := [ 2, 1, 2, 2 ], mathmode := "Text", name := "Func", next := 14700, root := ~, start := 14634, stop := 14699 ), rec( attributes := rec( ), content := [ rec( content := "\n A l\ ist of two lists, where the first list contains the determined\n prime fact\ ors of ", count := [ 2, 1, 2, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "n\ ", count := [ 2, 1, 2, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 1, 2, 3 ], mathmode := "Text", name := "A", next := 14817, root := ~, start := 14809, stop := 14816 ), rec( content := " and the\ second list contains the\n remaining unfactored parts of ", count := [ 2, 1, 2, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "n\ ", count := [ 2, 1, 2, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 1, 2, 3 ], mathmode := "Text", name := "A", next := 14898, root := ~, start := 14890, stop := 14897 ), rec( content := ", if the\ re are any.\n ", count := [ 2, 1, 2, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 1, 2, 3 ], mathmode := "Text", name := "Returns", next := 14930, root := ~, start := 14703, stop := 14929 ), rec( attributes := rec( ), content := [ rec( content := "\n Thi\ s function interprets all options which are interpreted by the\n method for\ ", count := [ 2, 1, 2, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ) , rec( attributes := rec( ), content := [ rec( content := "F\ actors", count := [ 2, 1, 2, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 1, 2, 3 ], mathmode := "Text", name := "C", next := 15046, root := ~, start := 15032, stop := 15045 ), rec( content := " describ\ ed above. In addition, it interprets\n the options ", count := [ 2, 1, 2, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "c\ heap", count := [ 2, 1, 2, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 1, 2, 3 ], mathmode := "Text", name := "A", next := 15119, root := ~, start := 15107, stop := 15118 ), rec( content := " and ", count := [ 2, 1, 2, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "F\ actIntPartial", count := [ 2, 1, 2, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 1, 2, 3 ], mathmode := "Text", name := "A", next := 15145, root := ~, start := 15124, stop := 15144 ), rec( content := ".\n I\ f the option ", count := [ 2, 1, 2, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "c\ heap", count := [ 2, 1, 2, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 1, 2, 3 ], mathmode := "Text", name := "A", next := 15177, root := ~, start := 15165, stop := 15176 ), rec( content := " is set,\ only usually\n cheap factorization attempts are made.\n If the option " , count := [ 2, 1, 2, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "F\ actIntPartial", count := [ 2, 1, 2, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 1, 2, 3 ], mathmode := "Text", name := "A", next := 15281, root := ~, start := 15260, stop := 15280 ), rec( content := " is set,\ the factorization process\n is stopped before invoking the (usually time-c\ onsuming) MPQS or CFRAC,\n if the number of digits of the remaining unfacto\ red part exceeds the\n bound passed as option value ", count := [ 2, 1, 2, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "M\ PQSLimit", count := [ 2, 1, 2, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 1, 2, 3 ], mathmode := "Text", name := "A", next := 15513, root := ~, start := 15497, stop := 15512 ), rec( content := " or ", count := [ 2, 1, 2, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "C\ FRACLimit", count := [ 2, 1, 2, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 1, 2, 3 ], mathmode := "Text", name := "A", next := 15534, root := ~, start := 15517, stop := 15533 ), rec( content := ",\n r\ espectively. ", count := [ 2, 1, 2, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := 0, count := [ 2, 1, 2, 4 ], mathmode := "Text", name := "P", next := 15558, root := ~, start := 15554, stop := 15557 ), rec( content := "\n\n \ ", count := [ 2, 1, 2, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "F\ actors(", count := [ 2, 1, 2, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes :\ = rec( ), content := [ rec( content := "n", count := [ 2, 1, 2, 4 ], mathmode\ := "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 1, 2, 4 ], mathmode := \ "Text", name := "A", next := 15583, root := ~, start := 15575, stop := 15582 ) , rec( content := "\ )", count := [ 2, 1, 2, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 1, 2, 4 ], mathmode := "Text", name := "C", next := 15588, root := ~, start := 15564, stop := 15587 ), rec( content := " is equi\ valent to\n ", count := [ 2, 1, 2, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "F\ actInt(", count := [ 2, 1, 2, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes :\ = rec( ), content := [ rec( content := "n", count := [ 2, 1, 2, 4 ], mathmode\ := "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 1, 2, 4 ], mathmode := \ "Text", name := "A", next := 15629, root := ~, start := 15621, stop := 15628 ) , rec( content := "\ :", count := [ 2, 1, 2, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ) , rec( attributes :\ = rec( ), content := [ rec( content := "cheap", count := [ 2, 1, 2, 4 ], math\ mode := "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 1, 2, 4 ], mathmode := \ "Text", name := "A", next := 15642, root := ~, start := 15630, stop := 15641 ) , rec( content := "\ :=false,\n ", count := [ 2, 1, 2, 4 ], mathmode := "Tex\ t", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( conte\ nt := "FactIntPartial", count := [ 2, 1, 2, 4 ], mathmode := "Text", name := "\ PCDATA", root := ~ ) ], count := [ 2, 1, 2, 4 ], mathmode := "Text", name := "A", next := 1569\ 6, root := ~, start := 15675, stop := 15695 ), rec( content := ":=false)[1]", count := [ 2, 1, 2, 4 ], mathmode := \ "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 1, 2, 4 ], mathmode := "Text", name := "C", next := 15711, root := ~, start := 15610, stop := 15710 ), rec( content := ".\n", count := [ 2, 1, 2, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "\\ n\ngap> FactInt( Factorial(300) + 1 : cheap );\n[ [ 461, 259856122109, 9951218\ 25812791, 3909669044842609, \n 4220826953750952739, 148410438398969407726\ 89086214475144339 ], \n [ 104831288231765723173983836560438594053336296629073\ 932563520618687\\\n92876450580106888272460615410656311193456740818340859600641\ 44597037243\\\n923586968220897938430949871925561506794335339935702922605893073\ 2298505\\\n5816977495398426741656633461747046623641451042655247093315505417820\ 370\\\n9451745871701742000546384614472756584182478531880962594857275869690727\ \\\n9733563594352516014206081210368516157890709802912711149521530885498556\\\n\ 1244667790208245620301404499928532222524585946881528337257061789593197\\\n9921\ 1283640357942345263781351 ] ]\n\n", count := [ 2, 1, 2, 5 ], name := "PCDATA", root := ~ ) ], count := [ 2, 1, 2, 5 ], mathmode := "Text", name := "Example", next := 16458, root := ~, start := 15713, stop := 16457 ), rec( content := "\n ", count := [ 2, 1, 2, 6 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 1, 2, 3 ], mathmode := "Text", name := "Description", next := 16475, root := ~, start := 14933, stop := 16474 ) ], count := [ 2, 1, 2, 1 ], mathmode := "Text", name := "ManSection", next := 16489, root := ~, start := 14619, stop := 16488 ), rec( content := "\n\n", count := [ 2, 1, 2, 6 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 1, 0, 1 ], mathmode := "Text", name := "Section", next := 16501, root := ~, start := 8127, stop := 16500 ), rec( content := "\n\n", count := [ 2, 1, 2, 6 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( content := " ###############################\ ##################################### ", count := [ 2, 1, 2, 6 ], mathmode := "Text", name := "XMLCOMMENT", root := ~ ), rec( content := "\n\n", count := [ 2, 1, 2, 6 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( Label := "sec:Info" ), content := [ rec( content := "\n", count := [ 2, 2, 0, 1 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "Getting informati\ on about the factoring process", count := [ 2, 2, 0, 2 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 2, 0, 2 ], mathmode := "Text", name := "Heading", next := 16675, root := ~, start := 16609, stop := 16674 ), rec( content := "\n\n", count := [ 2, 2, 0, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( Key := "information about factor\ ing process" ), content := [ rec( content := "\n information about factoring \ process\n", count := [ 2, 2, 0, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 2, 0, 3 ], mathmode := "Text", name := "Index", next := 16773, root := ~, start := 16677, stop := 16772 ), rec( content := "\n\nOptionally, the ", count := [ 2, 2, 0, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "FactInt", count := [ 2, 2, 0, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 2, 0, 3 ], mathmode := "Text", name := "Package", next := 27, root := ~, start := 1, stop := 26 ), rec( content := " package prints informat\ ion on the progress of\nthe factorization process:\n\n", count := [ 2, 2, 0, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( attributes := rec( Label := "FactInt's Info\ class", Name := "InfoFactInt" ), content := 0, count := [ 2, 2, 1, 2 ], mathmode := "Text", name := "InfoClass", next := 16963, root := ~, start := 16890, stop := 16962 ), rec( attributes := rec( Arg := "level", Label := "setting the In\ foLevel of InfoFactInt", Name := "FactIntInfo" ), content := 0, count := [ 2, 2, 1, 4 ], mathmode := "Text", name := "Func", next := 17067, root := ~, start := 16966, stop := 17066 ), rec( attributes := rec( ), content := [ rec( content := "\n Thi\ s Info class allows to monitor what happens during the factoring\n process.\ ", count := [ 2, 2, 1, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ) , rec( attributes := rec( ), content := 0, count := [ 2, 2, 1, 6 ], mathmode := "Text", name := "P", next := 17173, root := ~, start := 17169, stop := 17172 ), rec( content := "\n\n \ If ", count := [ 2, 2, 1, 6 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "I\ nfoLevel(InfoFactInt) = 1", count := [ 2, 2, 1, 6 ], mathmode := "Text", name := "PCD\ ATA", root := ~ ) ], count := [ 2, 2, 1, 6 ], mathmode := "Text", name := "C", next := 17215, root := ~, start := 17182, stop := 17214 ), rec( content := ", then b\ asic information\n about the factoring techniques used is displayed. If thi\ s InfoLevel has\n value 2, then additionally all ", count := [ 2, 2, 1, 6 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "r\ elevant", count := [ 2, 2, 1, 6 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 2, 1, 6 ], mathmode := "Text", name := "Q", next := 17371, root := ~, start := 17356, stop := 17370 ), rec( content := " steps i\ n the\n factoring algorithms are mentioned. If it is set equal to 3, then\ \n large amounts of details of the progress of the factoring process are\n \ shown. ", count := [ 2, 2, 1, 6 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := 0, count := [ 2, 2, 1, 7 ], mathmode := "Text", name := "P", next := 17549, root := ~, start := 17545, stop := 17548 ), rec( content := "\n\n \ Enter ", count := [ 2, 2, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "F\ actIntInfo(", count := [ 2, 2, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes :\ = rec( ), content := [ rec( content := "level", count := [ 2, 2, 1, 7 ], math\ mode := "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 2, 1, 7 ], mathmode := \ "Text", name := "A", next := 17588, root := ~, start := 17576, stop := 17587 ) , rec( content := "\ )", count := [ 2, 2, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 2, 1, 7 ], mathmode := "Text", name := "C", next := 17593, root := ~, start := 17561, stop := 17592 ), rec( content := " to set \ the\n ", count := [ 2, 2, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "I\ nfoLevel", count := [ 2, 2, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 2, 1, 7 ], mathmode := "Text", name := "C", next := 17625, root := ~, start := 17609, stop := 17624 ), rec( content := " of ", count := [ 2, 2, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "I\ nfoFactInt", count := [ 2, 2, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 2, 1, 7 ], mathmode := "Text", name := "C", next := 17647, root := ~, start := 17629, stop := 17646 ), rec( content := " to the \ positive\n integer ", count := [ 2, 2, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "l\ evel", count := [ 2, 2, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 2, 1, 7 ], mathmode := "Text", name := "A", next := 17688, root := ~, start := 17676, stop := 17687 ), rec( content := ". The ca\ ll ", count := [ 2, 2, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "F\ actIntInfo(", count := [ 2, 2, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes :\ = rec( ), content := [ rec( content := "level", count := [ 2, 2, 1, 7 ], math\ mode := "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 2, 1, 7 ], mathmode := \ "Text", name := "A", next := 17726, root := ~, start := 17714, stop := 17725 ) , rec( content := "\ );", count := [ 2, 2, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 2, 1, 7 ], mathmode := "Text", name := "C", next := 17732, root := ~, start := 17699, stop := 17731 ), rec( content := "\n is\ equivalent to ", count := [ 2, 2, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "S\ etInfoLevel(InfoFactInt,", count := [ 2, 2, 1, 7 ], mathmode := "Text", name := "PCD\ ATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "l\ evel", count := [ 2, 2, 1, 7 ], mathmode := "Text", name := "PCDATA", root := \ ~ ) ], count := [ 2, 2, 1, 7 ], mathmode := "Text", name := "A", next := 17794 , root := ~, start := 177\ 82, stop := 17793 ), rec( content := ");", count := [ 2, 2, 1, 7 ], mathmode := \ "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 2, 1, 7 ], mathmode := "Text", name := "C", next := 17800, root := ~, start := 17754, stop := 17799 ), rec( content := ". ", count := [ 2, 2, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := 0, count := [ 2, 2, 1, 8 ], mathmode := "Text", name := "P", next := 17806, root := ~, start := 17802, stop := 17805 ), rec( content := "\n\n \ The informational output is usually not literally the same in\n each factor\ ization attempt to a given integer with given parameters.\n For a descripti\ on of the Info mechanism, see Section\n ", count := [ 2, 2, 1, 8 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "I\ nfo Functions", count := [ 2, 2, 1, 8 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 2, 1, 8 ], mathmode := "Text", name := "E", next := 18029, root := ~, start := 18008, stop := 18028 ), rec( content := " in the \ ", count := [ 2, 2, 1, 8 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "G\ AP", count := [ 2, 2, 1, 8 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 2, 1, 8 ], mathmode := "Text", name := "Package", next := 23, root := ~, start := 1, stop := 22 ), rec( content := " Referen\ ce Manual. \n ", count := [ 2, 2, 1, 8 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 2, 1, 5 ], mathmode := "Text", name := "Description", next := 18078, root := ~, start := 17070, stop := 18077 ) ], count := [ 2, 2, 1, 1 ], mathmode := "Text", name := "ManSection", next := 18092, root := ~, start := 16875, stop := 18091 ), rec( content := "\n\n", count := [ 2, 2, 1, 8 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 2, 0, 1 ], mathmode := "Text", name := "Section", next := 18104, root := ~, start := 16582, stop := 18103 ), rec( content := "\n\n", count := [ 2, 2, 1, 8 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( content := " ###############################\ ##################################### ", count := [ 2, 2, 1, 8 ], mathmode := "Text", name := "XMLCOMMENT", root := ~ ), rec( content := "\n\n", count := [ 2, 2, 1, 8 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 2, 0, 0, 1 ], mathmode := "Text", name := "Chapter", next := 18195, root := ~, start := 7965, stop := 18194 ), rec( content := "\n\n", count := [ 2, 2, 1, 8 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( content := " #######################################\ ############################# ", count := [ 2, 2, 1, 8 ], mathmode := "Text", name := "XMLCOMMENT", root := ~ ), rec( content := "\n\n", count := [ 2, 2, 1, 8 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( content := " #######################################\ ############################# ", count := [ 2, 2, 1, 8 ], mathmode := "Text", name := "XMLCOMMENT", root := ~ ), rec( content := "\n", count := [ 2, 2, 1, 8 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( content := " ## \ ## ", count := [ 2, 2, 1, 8 ], mathmode := "Text", name := "XMLCOMMENT", root := ~ ), rec( content := "\n", count := [ 2, 2, 1, 8 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( content := " ## methods.xml FactInt document\ ation Stefan Kohl ## ", count := [ 2, 2, 1, 8 ], mathmode := "Text", name := "XMLCOMMENT", root := ~ ), rec( content := "\n", count := [ 2, 2, 1, 8 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( content := " ## \ ## ", count := [ 2, 2, 1, 8 ], mathmode := "Text", name := "XMLCOMMENT", root := ~ ), rec( content := "\n", count := [ 2, 2, 1, 8 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( content := " #######################################\ ############################# ", count := [ 2, 2, 1, 8 ], mathmode := "Text", name := "XMLCOMMENT", root := ~ ), rec( content := "\n\n", count := [ 2, 2, 1, 8 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( Label := "ch:Methods" ), content := [ rec( content := "\n", count := [ 3, 0, 0, 1 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "The Routines for Specific\ Factorization Methods", count := [ 3, 0, 0, 2 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 0, 0, 2 ], mathmode := "Text", name := "Heading", next := 18762, root := ~, start := 18696, stop := 18761 ), rec( content := "\n\nDescriptions of the factorin\ g methods implemented in this package can\nbe found in ", count := [ 3, 0, 0, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( Key := "Bressoud89" ), content := 0, count := [ 3, 0, 0, 3 ], mathmode := "Text", name := "Cite", next := 18875, root := ~, start := 18851, stop := 18874 ), rec( content := " and ", count := [ 3, 0, 0, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( Key := "Cohen93" ), content := 0, count := [ 3, 0, 0, 3 ], mathmode := "Text", name := "Cite", next := 18901, root := ~, start := 18880, stop := 18900 ), rec( content := ".\nCohen's book contains also de\ scriptions of the other methods mentioned\nin the preface.\n\n", count := [ 3, 0, 0, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( content := " ###############################\ ##################################### ", count := [ 3, 0, 0, 3 ], mathmode := "Text", name := "XMLCOMMENT", root := ~ ), rec( content := "\n\n", count := [ 3, 0, 0, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( Label := "sec:TrialDivision" ), content := [ rec( content := "\n", count := [ 3, 1, 0, 1 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "Trial division", count := [ 3, 1, 0, 2 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 1, 0, 2 ], mathmode := "Text", name := "Heading", next := 19139, root := ~, start := 19106, stop := 19138 ), rec( content := "\n\n", count := [ 3, 1, 0, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( Key := "trial division" ), content := [ rec( content := "trial division", count := [ 3, 1, 0, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 1, 0, 3 ], mathmode := "Text", name := "Index", next := 19191, root := ~, start := 19141, stop := 19190 ), rec( content := "\n\n", count := [ 3, 1, 0, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( attributes := rec( Arg := "n [, Divisors ]" , Label := "trial division\ ", Name := "FactorsTD" ), content := 0, count := [ 3, 1, 1, 2 ], mathmode := "Text", name := "Func", next := 19277, root := ~, start := 19208, stop := 19276 ), rec( attributes := rec( ), content := [ rec( content := "\n A l\ ist of two lists: The first list contains the prime factors found,\n and th\ e second list contains remaining unfactored parts of ", count := [ 3, 1, 1, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "n\ ", count := [ 3, 1, 1, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 1, 1, 3 ], mathmode := "Text", name := "A", next := 19435, root := ~, start := 19427, stop := 19434 ), rec( content := ",\n i\ f there are any.\n ", count := [ 3, 1, 1, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 1, 1, 3 ], mathmode := "Text", name := "Returns", next := 19471, root := ~, start := 19280, stop := 19470 ), rec( attributes := rec( ), content := [ rec( content := "\n Thi\ s function tries to factor ", count := [ 3, 1, 1, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "n\ ", count := [ 3, 1, 1, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 1, 1, 3 ], mathmode := "Text", name := "A", next := 19530, root := ~, start := 19522, stop := 19529 ), rec( content := " by tria\ l division.\n The optional argument ", count := [ 3, 1, 1, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "D\ ivisors", count := [ 3, 1, 1, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 1, 1, 3 ], mathmode := "Text", name := "A", next := 19591, root := ~, start := 19576, stop := 19590 ), rec( content := " is the \ list of trial divisors.\n If not given, it defaults to the list of primes " , count := [ 3, 1, 1, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "p\ < 1000", count := [ 3, 1, 1, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 1, 1, 3 ], mathmode := "Text", name := "M", next := 19693, root := ~, start := 19675, stop := 19692 ), rec( content := ".\n", count := [ 3, 1, 1, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "\\ n\ngap> FactorsTD(12^25+25^12);\n[ [ 13, 19, 727 ], [ 5312510324723614735153 ]\ ]\n\n", count := [ 3, 1, 1, 4 ], name := "PCDATA", root := ~ ) ], count := [ 3, 1, 1, 4 ], mathmode := "Text", name := "Example", next := 19806, root := ~, start := 19695, stop := 19805 ), rec( content := "\n ", count := [ 3, 1, 1, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 1, 1, 3 ], mathmode := "Text", name := "Description", next := 19823, root := ~, start := 19474, stop := 19822 ) ], count := [ 3, 1, 1, 1 ], mathmode := "Text", name := "ManSection", next := 19837, root := ~, start := 19193, stop := 19836 ), rec( content := "\n\n", count := [ 3, 1, 1, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 1, 0, 1 ], mathmode := "Text", name := "Section", next := 19849, root := ~, start := 19070, stop := 19848 ), rec( content := "\n\n", count := [ 3, 1, 1, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( content := " ###############################\ ##################################### ", count := [ 3, 1, 1, 5 ], mathmode := "Text", name := "XMLCOMMENT", root := ~ ), rec( content := "\n\n", count := [ 3, 1, 1, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( Label := "sec:PollardsPminus1" ), content := [ rec( content := "\n", count := [ 3, 2, 0, 1 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "Pollard's ", count := [ 3, 2, 0, 2 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "p-1", count := [ 3, 2, 0, 2 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 2, 0, 2 ], mathmode := "Text", name := "M", next := 19997, root := ~, start := 19987, stop := 19996 ) ], count := [ 3, 2, 0, 2 ], mathmode := "Text", name := "Heading", next := 20007, root := ~, start := 19968, stop := 20006 ), rec( content := "\n\n", count := [ 3, 2, 0, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( Key := "Pollard's p-1" ), content := [ rec( content := "Pollard's ", count := [ 3, 2, 0, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "p-1", count := [ 3, 2, 0, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 2, 0, 3 ], mathmode := "Text", name := "M", next := 20056, root := ~, start := 20046, stop := 20055 ) ], count := [ 3, 2, 0, 3 ], mathmode := "Text", name := "Index", next := 20064, root := ~, start := 20009, stop := 20063 ), rec( content := "\n\n", count := [ 3, 2, 0, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( attributes := rec( Arg := "n [, [ a, ] Limi\ t1 [, Limit2 ] ]", Label := "Pollard's p-1", Name := "FactorsPminus1" ), content := 0, count := [ 3, 2, 1, 2 ], mathmode := "Text", name := "Func", next := 20179, root := ~, start := 20081, stop := 20178 ), rec( attributes := rec( ), content := [ rec( content := "\n A l\ ist of two lists: The first list contains the prime factors found,\n and th\ e second list contains remaining unfactored parts of ", count := [ 3, 2, 1, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "n\ ", count := [ 3, 2, 1, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 2, 1, 3 ], mathmode := "Text", name := "A", next := 20337, root := ~, start := 20329, stop := 20336 ), rec( content := ",\n i\ f there are any.\n ", count := [ 3, 2, 1, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 2, 1, 3 ], mathmode := "Text", name := "Returns", next := 20373, root := ~, start := 20182, stop := 20372 ), rec( attributes := rec( ), content := [ rec( content := "\n Thi\ s function tries to factor ", count := [ 3, 2, 1, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "n\ ", count := [ 3, 2, 1, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 2, 1, 3 ], mathmode := "Text", name := "A", next := 20432, root := ~, start := 20424, stop := 20431 ), rec( content := " using P\ ollard's ", count := [ 3, 2, 1, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "p\ -1", count := [ 3, 2, 1, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 2, 1, 3 ], mathmode := "Text", name := "M", next := 20464, root := ~, start := 20454, stop := 20463 ), rec( content := ".\n I\ t uses ", count := [ 3, 2, 1, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "a\ ", count := [ 3, 2, 1, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 2, 1, 3 ], mathmode := "Text", name := "A", next := 20486, root := ~, start := 20478, stop := 20485 ), rec( content := " as base\ for exponentiation, ", count := [ 3, 2, 1, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "L\ imit1", count := [ 3, 2, 1, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 2, 1, 3 ], mathmode := "Text", name := "A", next := 20528, root := ~, start := 20515, stop := 20527 ), rec( content := " as firs\ t\n stage limit and ", count := [ 3, 2, 1, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "L\ imit2", count := [ 3, 2, 1, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 2, 1, 3 ], mathmode := "Text", name := "A", next := 20571, root := ~, start := 20558, stop := 20570 ), rec( content := " as seco\ nd stage limit.\n If the function is called with three arguments, these arg\ uments are\n interpreted as ", count := [ 3, 2, 1, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "n\ ", count := [ 3, 2, 1, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 2, 1, 3 ], mathmode := "Text", name := "A", next := 20694, root := ~, start := 20686, stop := 20693 ), rec( content := ", ", count := [ 3, 2, 1, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "L\ imit1", count := [ 3, 2, 1, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 2, 1, 3 ], mathmode := "Text", name := "A", next := 20709, root := ~, start := 20696, stop := 20708 ), rec( content := " and ", count := [ 3, 2, 1, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "L\ imit2", count := [ 3, 2, 1, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 2, 1, 3 ], mathmode := "Text", name := "A", next := 20727, root := ~, start := 20714, stop := 20726 ), rec( content := ". Defaul\ ts are\n chosen for all arguments which are omitted. ", count := [ 3, 2, 1, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := 0, count := [ 3, 2, 1, 4 ], mathmode := "Text", name := "P", next := 20794, root := ~, start := 20790, stop := 20793 ), rec( content := "\n\n \ Pollard's ", count := [ 3, 2, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "p\ -1", count := [ 3, 2, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 2, 1, 4 ], mathmode := "Text", name := "M", next := 20820, root := ~, start := 20810, stop := 20819 ), rec( content := " is base\ d on the fact that exponentiation\n (mod ", count := [ 3, 2, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "n\ ", count := [ 3, 2, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 2, 1, 4 ], mathmode := "Text", name := "M", next := 20884, root := ~, start := 20876, stop := 20883 ), rec( content := ") can be\ done efficiently enough to compute\n ", count := [ 3, 2, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "a\ ^{k!}", count := [ 3, 2, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 2, 1, 4 ], mathmode := "Text", name := "M", next := 20945, root := ~, start := 20932, stop := 20944 ), rec( content := " mod ", count := [ 3, 2, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "n\ ", count := [ 3, 2, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 2, 1, 4 ], mathmode := "Text", name := "M", next := 20963, root := ~, start := 20955, stop := 20962 ), rec( content := " for suf\ ficiently large ", count := [ 3, 2, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "k\ ", count := [ 3, 2, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 2, 1, 4 ], mathmode := "Text", name := "M", next := 21000, root := ~, start := 20992, stop := 20999 ), rec( content := "\n in\ a reasonable amount of time. Assume that ", count := [ 3, 2, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "p\ ", count := [ 3, 2, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 2, 1, 4 ], mathmode := "Text", name := "M", next := 21057, root := ~, start := 21049, stop := 21056 ), rec( content := " is a pr\ ime factor\n of ", count := [ 3, 2, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "n\ ", count := [ 3, 2, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 2, 1, 4 ], mathmode := "Text", name := "M", next := 21091, root := ~, start := 21083, stop := 21090 ), rec( content := " which d\ oes not divide ", count := [ 3, 2, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "a\ ", count := [ 3, 2, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 2, 1, 4 ], mathmode := "Text", name := "M", next := 21127, root := ~, start := 21119, stop := 21126 ), rec( content := ", and th\ at ", count := [ 3, 2, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "k\ !", count := [ 3, 2, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 2, 1, 4 ], mathmode := "Text", name := "M", next := 21147, root := ~, start := 21138, stop := 21146 ), rec( content := "\n is\ a multiple of ", count := [ 3, 2, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "p\ -1", count := [ 3, 2, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 2, 1, 4 ], mathmode := "Text", name := "M", next := 21184, root := ~, start := 21174, stop := 21183 ), rec( content := ". Then\n\ ", count := [ 3, 2, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( Key := "Lagrange\ 's Theorem" ), content := [ rec( content := "Lagrange's Theorem", count := [ 3, 2, 1, 4 ], mathmode := \ "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 2, 1, 4 ], mathmode := "Text", name := "Index", next := 21253, root := ~, start := 21195, stop := 21252 ), rec( content := "\n La\ grange's Theorem states that ", count := [ 3, 2, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "a\ ^{k!} \\equiv 1", count := [ 3, 2, 1, 4 ], mathmode := "Text", name := "PCDATA\ ", root := ~ ) ], count := [ 3, 2, 1, 4 ], mathmode := "Text", name := "M", next := 21311, root := ~, start := 21289, stop := 21310 ), rec( content := "\n (m\ od ", count := [ 3, 2, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "p\ ", count := [ 3, 2, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 2, 1, 4 ], mathmode := "Text", name := "M", next := 21334, root := ~, start := 21326, stop := 21333 ), rec( content := "). If ", count := [ 3, 2, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "k\ !", count := [ 3, 2, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 2, 1, 4 ], mathmode := "Text", name := "M", next := 21349, root := ~, start := 21340, stop := 21348 ), rec( content := " is not \ a multiple of ", count := [ 3, 2, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "q\ -1", count := [ 3, 2, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 2, 1, 4 ], mathmode := "Text", name := "M", next := 21381, root := ~, start := 21371, stop := 21380 ), rec( content := " for\n \ another prime factor ", count := [ 3, 2, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "q\ ", count := [ 3, 2, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 2, 1, 4 ], mathmode := "Text", name := "M", next := 21419, root := ~, start := 21411, stop := 21418 ), rec( content := " of ", count := [ 3, 2, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "n\ ", count := [ 3, 2, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 2, 1, 4 ], mathmode := "Text", name := "M", next := 21436, root := ~, start := 21428, stop := 21435 ), rec( content := ", it is \ likely that the\n factor ", count := [ 3, 2, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "p\ ", count := [ 3, 2, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 2, 1, 4 ], mathmode := "Text", name := "M", next := 21484, root := ~, start := 21476, stop := 21483 ), rec( content := " can be \ determined by computing\n ", count := [ 3, 2, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "\\ \gcd(a^{k!}-1,n)", count := [ 3, 2, 1, 4 ], mathmode := "Text", name := "PCDAT\ A", root := ~ ) ], count := [ 3, 2, 1, 4 ], mathmode := "Text", name := "M", next := 21543, root := ~, start := 21520, stop := 21542 ), rec( content := ". A prim\ e factor ", count := [ 3, 2, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "p\ ", count := [ 3, 2, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 2, 1, 4 ], mathmode := "Text", name := "M", next := 21568, root := ~, start := 21560, stop := 21567 ), rec( content := " is usua\ lly found if\n the largest prime factor of ", count := [ 3, 2, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "p\ -1", count := [ 3, 2, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 2, 1, 4 ], mathmode := "Text", name := "M", next := 21631, root := ~, start := 21621, stop := 21630 ), rec( content := " is not \ larger than ", count := [ 3, 2, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "L\ imit2", count := [ 3, 2, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 2, 1, 4 ], mathmode := "Text", name := "A", next := 21664, root := ~, start := 21651, stop := 21663 ), rec( content := ",\n a\ nd the second-largest one is not larger than ", count := [ 3, 2, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "L\ imit1", count := [ 3, 2, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 2, 1, 4 ], mathmode := "Text", name := "A", next := 21729, root := ~, start := 21716, stop := 21728 ), rec( content := ".\n (\ Compare with ", count := [ 3, 2, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( Func := "Factors\ Pplus1", Label := "Williams' p+1" ), content := 0, count := [ 3, 2, 1, 4 ], mathmode := "Text", name := "Ref", next := 21798, root := ~, start := 21749, stop := 21797 ), rec( content := "\n an\ d ", count := [ 3, 2, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( Func := "Factors\ ECM", Label := "Elliptic Curves Method, ECM" ), content := 0, count := [ 3, 2, 1, 4 ], mathmode := "Text", name := "Ref", next := 21872, root := ~, start := 21812, stop := 21871 ), rec( content := ".)\n", count := [ 3, 2, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "\\ n\ngap> FactorsPminus1( Factorial(158) + 1, 100000, 1000000 );\n[ [ 2879, 5227\ , 1452486383317, 9561906969931, 18331561438319, \n 4837142997094837608115\ 811103417329505064932181226548534006749213\\\n45082310906370452295654816571305\ 04121732305287984292482612133314325471\\\n367483296277310780678994571557038603\ 8565256719614524924705165110048148\\\n7161609649806290811760570095669 ], [ ] \ ]\ngap> List( last[ 1 ]{[ 3, 4, 5 ]}, p -> Factors( p - 1 ) );\n[ [ 2, 2, 3, 3\ , 81937, 492413 ], [ 2, 3, 3, 3, 5, 7, 7, 1481, 488011 ]\n , [ 2, 3001, 764\ 3, 399613 ] ]\n\n", count := [ 3, 2, 1, 5 ], name := "PCDATA", root := ~ ) ], count := [ 3, 2, 1, 5 ], mathmode := "Text", name := "Example", next := 22455, root := ~, start := 21875, stop := 22454 ), rec( content := "\n ", count := [ 3, 2, 1, 6 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 2, 1, 3 ], mathmode := "Text", name := "Description", next := 22472, root := ~, start := 20376, stop := 22471 ) ], count := [ 3, 2, 1, 1 ], mathmode := "Text", name := "ManSection", next := 22486, root := ~, start := 20066, stop := 22485 ), rec( content := "\n\n", count := [ 3, 2, 1, 6 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 2, 0, 1 ], mathmode := "Text", name := "Section", next := 22498, root := ~, start := 19930, stop := 22497 ), rec( content := "\n\n", count := [ 3, 2, 1, 6 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( content := " ###############################\ ##################################### ", count := [ 3, 2, 1, 6 ], mathmode := "Text", name := "XMLCOMMENT", root := ~ ), rec( content := "\n\n", count := [ 3, 2, 1, 6 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( Label := "sec:WilliamsPplus1" ), content := [ rec( content := "\n", count := [ 3, 3, 0, 1 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "Williams' ", count := [ 3, 3, 0, 2 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "p+1", count := [ 3, 3, 0, 2 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 3, 0, 2 ], mathmode := "Text", name := "M", next := 22645, root := ~, start := 22635, stop := 22644 ) ], count := [ 3, 3, 0, 2 ], mathmode := "Text", name := "Heading", next := 22655, root := ~, start := 22616, stop := 22654 ), rec( content := "\n\n", count := [ 3, 3, 0, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( Key := "Williams' p+1" ), content := [ rec( content := "Williams' ", count := [ 3, 3, 0, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "p+1", count := [ 3, 3, 0, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 3, 0, 3 ], mathmode := "Text", name := "M", next := 22704, root := ~, start := 22694, stop := 22703 ) ], count := [ 3, 3, 0, 3 ], mathmode := "Text", name := "Index", next := 22712, root := ~, start := 22657, stop := 22711 ), rec( content := "\n\n", count := [ 3, 3, 0, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( attributes := rec( Arg := "n [, [ Residues,\ ] Limit1 [, Limit2 ] ]", Label := "Williams' p+1", Name := "FactorsPplus1" ), content := 0, count := [ 3, 3, 1, 2 ], mathmode := "Text", name := "Func", next := 22833, root := ~, start := 22729, stop := 22832 ), rec( attributes := rec( ), content := [ rec( content := "\n A l\ ist of two lists: The first list contains the prime factors found,\n and th\ e second list contains remaining unfactored parts of ", count := [ 3, 3, 1, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "n\ ", count := [ 3, 3, 1, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 3, 1, 3 ], mathmode := "Text", name := "A", next := 22991, root := ~, start := 22983, stop := 22990 ), rec( content := ",\n i\ f there are any.\n ", count := [ 3, 3, 1, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 3, 1, 3 ], mathmode := "Text", name := "Returns", next := 23027, root := ~, start := 22836, stop := 23026 ), rec( attributes := rec( ), content := [ rec( content := "\n Thi\ s function tries to factor ", count := [ 3, 3, 1, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "n\ ", count := [ 3, 3, 1, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 3, 1, 3 ], mathmode := "Text", name := "A", next := 23086, root := ~, start := 23078, stop := 23085 ), rec( content := " using W\ illiams' ", count := [ 3, 3, 1, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "p\ +1", count := [ 3, 3, 1, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 3, 1, 3 ], mathmode := "Text", name := "M", next := 23118, root := ~, start := 23108, stop := 23117 ), rec( content := ".\n I\ t tries ", count := [ 3, 3, 1, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "R\ esidues", count := [ 3, 3, 1, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 3, 1, 3 ], mathmode := "Text", name := "A", next := 23148, root := ~, start := 23133, stop := 23147 ), rec( content := " differe\ nt residues, and uses ", count := [ 3, 3, 1, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "L\ imit1", count := [ 3, 3, 1, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 3, 1, 3 ], mathmode := "Text", name := "A", next := 23191, root := ~, start := 23178, stop := 23190 ), rec( content := "\n as\ first stage limit and ", count := [ 3, 3, 1, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "L\ imit2", count := [ 3, 3, 1, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 3, 1, 3 ], mathmode := "Text", name := "A", next := 23234, root := ~, start := 23221, stop := 23233 ), rec( content := " as seco\ nd stage limit.\n If the function is called with three arguments, these arg\ uments are\n interpreted as ", count := [ 3, 3, 1, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "n\ ", count := [ 3, 3, 1, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 3, 1, 3 ], mathmode := "Text", name := "A", next := 23357, root := ~, start := 23349, stop := 23356 ), rec( content := ", ", count := [ 3, 3, 1, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "L\ imit1", count := [ 3, 3, 1, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 3, 1, 3 ], mathmode := "Text", name := "A", next := 23372, root := ~, start := 23359, stop := 23371 ), rec( content := " and ", count := [ 3, 3, 1, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "L\ imit2", count := [ 3, 3, 1, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 3, 1, 3 ], mathmode := "Text", name := "A", next := 23390, root := ~, start := 23377, stop := 23389 ), rec( content := ". Defaul\ ts are\n chosen for all arguments which are omitted. ", count := [ 3, 3, 1, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := 0, count := [ 3, 3, 1, 4 ], mathmode := "Text", name := "P", next := 23457, root := ~, start := 23453, stop := 23456 ), rec( content := "\n\n \ Williams' ", count := [ 3, 3, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "p\ +1", count := [ 3, 3, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 3, 1, 4 ], mathmode := "Text", name := "M", next := 23483, root := ~, start := 23473, stop := 23482 ), rec( content := " is very\ similar to Pollard's ", count := [ 3, 3, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "p\ -1", count := [ 3, 3, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 3, 1, 4 ], mathmode := "Text", name := "M", next := 23528, root := ~, start := 23518, stop := 23527 ), rec( content := "\n (s\ ee ", count := [ 3, 3, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( Func := "Factors\ Pminus1", Label := "Pollard's p-1" ), content := 0, count := [ 3, 3, 1, 4 ], mathmode := "Text", name := "Ref", next := 23588, root := ~, start := 23538, stop := 23587 ), rec( content := ").\n \ The difference is that the underlying group here can either have order\n ", count := [ 3, 3, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "p\ +1", count := [ 3, 3, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 3, 1, 4 ], mathmode := "Text", name := "M", next := 23680, root := ~, start := 23670, stop := 23679 ), rec( content := " or ", count := [ 3, 3, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "p\ -1", count := [ 3, 3, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 3, 1, 4 ], mathmode := "Text", name := "M", next := 23694, root := ~, start := 23684, stop := 23693 ), rec( content := ", and th\ at the group operation takes more time.\n A prime factor ", count := [ 3, 3, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "p\ ", count := [ 3, 3, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 3, 1, 4 ], mathmode := "Text", name := "M", next := 23769, root := ~, start := 23761, stop := 23768 ), rec( content := " is usua\ lly found if the largest prime factor\n of the group order is at most ", count := [ 3, 3, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "L\ imit2", count := [ 3, 3, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 3, 1, 4 ], mathmode := "Text", name := "A", next := 23862, root := ~, start := 23849, stop := 23861 ), rec( content := " and the\ second-largest one\n is not larger than ", count := [ 3, 3, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "L\ imit1", count := [ 3, 3, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 3, 1, 4 ], mathmode := "Text", name := "A", next := 23926, root := ~, start := 23913, stop := 23925 ), rec( content := ".\n (\ Compare also with ", count := [ 3, 3, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( Func := "Factors\ ECM", Label := "Elliptic Curves Method, ECM" ), content := 0, count := [ 3, 3, 1, 4 ], mathmode := "Text", name := "Ref", next := 24039, root := ~, start := 23951, stop := 24038 ), rec( content := ".)\n", count := [ 3, 3, 1, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "\\ n\ngap> FactorsPplus1( Factorial(55) - 1, 10, 10000, 100000 );\n[ [ 73, 39619,\ 277914269, 148257413069 ], \n [ 10654352912004995495508507663453726245971886\ 3957 ] ]\ngap> List( last[ 1 ], p -> [ Factors( p - 1 ), Factors( p + 1 ) ] );\ \n[ [ [ 2, 2, 2, 3, 3 ], [ 2, 37 ] ], \n [ [ 2, 3, 3, 31, 71 ], [ 2, 2, 5, 7,\ 283 ] ], \n [ [ 2, 2, 2207, 31481 ], [ 2, 3, 5, 9263809 ] ], \n [ [ 2, 2, 4\ 7, 788603261 ], [ 2, 3, 5, 13, 37, 67, 89, 1723 ] ] ]\n\n", count := [ 3, 3, 1, 5 ], name := "PCD\ ATA", root := ~ ) ], count := [ 3, 3, 1, 5 ], mathmode := "Text", name := "Example", next := 24510, root := ~, start := 24042, stop := 24509 ), rec( content := "\n ", count := [ 3, 3, 1, 6 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 3, 1, 3 ], mathmode := "Text", name := "Description", next := 24527, root := ~, start := 23030, stop := 24526 ) ], count := [ 3, 3, 1, 1 ], mathmode := "Text", name := "ManSection", next := 24541, root := ~, start := 22714, stop := 24540 ), rec( content := "\n\n", count := [ 3, 3, 1, 6 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 3, 0, 1 ], mathmode := "Text", name := "Section", next := 24553, root := ~, start := 22579, stop := 24552 ), rec( content := "\n\n", count := [ 3, 3, 1, 6 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( content := " ###############################\ ##################################### ", count := [ 3, 3, 1, 6 ], mathmode := "Text", name := "XMLCOMMENT", root := ~ ), rec( content := "\n\n", count := [ 3, 3, 1, 6 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( Label := "sec:ECM" ), content := [ rec( content := "\n", count := [ 3, 4, 0, 1 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "The Elliptic Curv\ es Method (ECM)", count := [ 3, 4, 0, 2 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 4, 0, 2 ], mathmode := "Text", name := "Heading", next := 24711, root := ~, start := 24660, stop := 24710 ), rec( content := "\n\n", count := [ 3, 4, 0, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( Key := "Elliptic Curves Method (\ ECM)" ), content := [ rec( content := "\n Elliptic Curves Method (ECM)\n", count := [ 3, 4, 0, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 4, 0, 3 ], mathmode := "Text", name := "Index", next := 24795, root := ~, start := 24713, stop := 24794 ), rec( content := "\n\n", count := [ 3, 4, 0, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( attributes := rec( Arg := "n [, Curves [, L\ imit1 [, Limit2 [, Delta ] ] ] ]", Label := "Elliptic Curves Method, ECM", Name := "FactorsECM" ), content := 0, count := [ 3, 4, 1, 2 ], mathmode := "Text", name := "Func", next := 24944, root := ~, start := 24812, stop := 24943 ), rec( attributes := rec( Arg := "n [, Curves [, L\ imit1 [, Limit2 [, Delta ] ] ] ]", Label := "shorthand for FactorsECM", Name := "ECM" ), content := 0, count := [ 3, 4, 1, 4 ], mathmode := "Text", name := "Func", next := 25069, root := ~, start := 24947, stop := 25068 ), rec( attributes := rec( ), content := [ rec( content := "\n A l\ ist of two lists: The first list contains the prime factors found,\n and th\ e second list contains remaining unfactored parts of ", count := [ 3, 4, 1, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "n\ ", count := [ 3, 4, 1, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 4, 1, 5 ], mathmode := "Text", name := "A", next := 25227, root := ~, start := 25219, stop := 25226 ), rec( content := ",\n i\ f there are any.\n ", count := [ 3, 4, 1, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 4, 1, 5 ], mathmode := "Text", name := "Returns", next := 25263, root := ~, start := 25072, stop := 25262 ), rec( attributes := rec( ), content := [ rec( content := "\n Thi\ s function tries to factor ", count := [ 3, 4, 1, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "n\ ", count := [ 3, 4, 1, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 4, 1, 5 ], mathmode := "Text", name := "A", next := 25322, root := ~, start := 25314, stop := 25321 ), rec( content := " using t\ he Elliptic Curves\n Method (ECM).\n The argument ", count := [ 3, 4, 1, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "C\ urves", count := [ 3, 4, 1, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 4, 1, 5 ], mathmode := "Text", name := "A", next := 25397, root := ~, start := 25384, stop := 25396 ), rec( content := " is the \ number of curves to be tried.\n The argument ", count := [ 3, 4, 1, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "L\ imit1", count := [ 3, 4, 1, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 4, 1, 5 ], mathmode := "Text", name := "A", next := 25465, root := ~, start := 25452, stop := 25464 ), rec( content := " is the \ initial\n ", count := [ 3, 4, 1, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( Key := "first st\ age limit" ), content := [ rec( content := "first stage limit", count := [ 3, 4, 1, 5 ], mathmode := \ "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 4, 1, 5 ], mathmode := "Text", name := "Index", next := 25541, root := ~, start := 25485, stop := 25540 ), rec( content := "\n fi\ rst stage limit, and ", count := [ 3, 4, 1, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "L\ imit2", count := [ 3, 4, 1, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 4, 1, 5 ], mathmode := "Text", name := "A", next := 25582, root := ~, start := 25569, stop := 25581 ), rec( content := " is the \ initial\n ", count := [ 3, 4, 1, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( Key := "second s\ tage limit" ), content := [ rec( content := "second stage limit", count := [ 3, 4, 1, 5 ], mathmode := \ "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 4, 1, 5 ], mathmode := "Text", name := "Index", next := 25660, root := ~, start := 25602, stop := 25659 ), rec( content := "\n se\ cond stage limit.\n The argument ", count := [ 3, 4, 1, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "D\ elta", count := [ 3, 4, 1, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 4, 1, 5 ], mathmode := "Text", name := "A", next := 25714, root := ~, start := 25702, stop := 25713 ), rec( content := " is the \ increment per curve for the first stage\n limit. The second stage limit is \ adjusted appropriately. Defaults are\n chosen for all arguments which are o\ mitted. ", count := [ 3, 4, 1, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := 0, count := [ 3, 4, 1, 6 ], mathmode := "Text", name := "P", next := 25888, root := ~, start := 25884, stop := 25887 ), rec( content := "\n\n \ ", count := [ 3, 4, 1, 6 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "F\ actorsECM", count := [ 3, 4, 1, 6 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 4, 1, 6 ], mathmode := "Text", name := "C", next := 25911, root := ~, start := 25894, stop := 25910 ), rec( content := " recogni\ zes the option ", count := [ 3, 4, 1, 6 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "E\ CMDeterministic", count := [ 3, 4, 1, 6 ], mathmode := "Text", name := "PCDATA\ ", root := ~ ) ], count := [ 3, 4, 1, 6 ], mathmode := "Text", name := "A", next := 25957, root := ~, start := 25934, stop := 25956 ), rec( content := ".\n I\ f set, the choice of the curves is deterministic.\n This means that in repe\ ated runs of ", count := [ 3, 4, 1, 6 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "F\ actorsECM", count := [ 3, 4, 1, 6 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 4, 1, 6 ], mathmode := "Text", name := "C", next := 26071, root := ~, start := 26054, stop := 26070 ), rec( content := " the sam\ e\n curves are used, and hence for the same ", count := [ 3, 4, 1, 6 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "n\ ", count := [ 3, 4, 1, 6 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 4, 1, 6 ], mathmode := "Text", name := "M", next := 26138, root := ~, start := 26130, stop := 26137 ), rec( content := " the sam\ e\n factors are found after the same number of trials. ", count := [ 3, 4, 1, 6 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := 0, count := [ 3, 4, 1, 7 ], mathmode := "Text", name := "P", next := 26207, root := ~, start := 26203, stop := 26206 ), rec( content := "\n\n \ The Elliptic Curves Method is based on the fact that exponentiation\n in th\ e\n ", count := [ 3, 4, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( Key := "elliptic\ curve groups" ), content := [ rec( content := "elliptic curve groups", count := [ 3, 4, 1, 7 ], mathmode := \ "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 4, 1, 7 ], mathmode := "Text", name := "Index", next := 26360, root := ~, start := 26296, stop := 26359 ), rec( content := "\n el\ liptic curve groups ", count := [ 3, 4, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "E\ (a,b)/n", count := [ 3, 4, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 4, 1, 7 ], mathmode := "Text", name := "M", next := 26402, root := ~, start := 26387, stop := 26401 ), rec( content := " can be \ performed fast enough\n to compute for example ", count := [ 3, 4, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "g\ ^{k!}", count := [ 3, 4, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 4, 1, 7 ], mathmode := "Text", name := "M", next := 26472, root := ~, start := 26459, stop := 26471 ), rec( content := " for ", count := [ 3, 4, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "k\ ", count := [ 3, 4, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 4, 1, 7 ], mathmode := "Text", name := "M", next := 26485, root := ~, start := 26477, stop := 26484 ), rec( content := " large e\ nough\n (e.g. 100000 or so) in a reasonable amount of time and without\n \ using much memory, and on Lagrange's Theorem.\n Assume that ", count := [ 3, 4, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "p\ ", count := [ 3, 4, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 4, 1, 7 ], mathmode := "Text", name := "M", next := 26640, root := ~, start := 26632, stop := 26639 ), rec( content := " is a pr\ ime divisor of ", count := [ 3, 4, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "n\ ", count := [ 3, 4, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 4, 1, 7 ], mathmode := "Text", name := "M", next := 26676, root := ~, start := 26668, stop := 26675 ), rec( content := ".\n T\ hen Lagrange's Theorem states that if ", count := [ 3, 4, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "k\ !", count := [ 3, 4, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 4, 1, 7 ], mathmode := "Text", name := "M", next := 26730, root := ~, start := 26721, stop := 26729 ), rec( content := " is a mu\ ltiple of\n ", count := [ 3, 4, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "|\ E(a,b)/p|", count := [ 3, 4, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 4, 1, 7 ], mathmode := "Text", name := "M", next := 26769, root := ~, start := 26752, stop := 26768 ), rec( content := ", then f\ or any\n ", count := [ 3, 4, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( Key := "elliptic\ curve point" ), content := [ rec( content := "elliptic curve point", count := [ 3, 4, 1, 7 ], mathmode := \ "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 4, 1, 7 ], mathmode := "Text", name := "Index", next := 26850, root := ~, start := 26788, stop := 26849 ), rec( content := "\n el\ liptic curve point ", count := [ 3, 4, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "g\ ", count := [ 3, 4, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 4, 1, 7 ], mathmode := "Text", name := "M", next := 26889, root := ~, start := 26881, stop := 26888 ), rec( content := ", the po\ wer ", count := [ 3, 4, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "g\ ^{k!}", count := [ 3, 4, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 4, 1, 7 ], mathmode := "Text", name := "M", next := 26914, root := ~, start := 26901, stop := 26913 ), rec( content := " is the\\ n identity element of ", count := [ 3, 4, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "E\ (a,b)/p", count := [ 3, 4, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 4, 1, 7 ], mathmode := "Text", name := "M", next := 26961, root := ~, start := 26946, stop := 26960 ), rec( content := ".\n I\ n this situation -- under reasonable circumstances --\n the factor ", count := [ 3, 4, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "p\ ", count := [ 3, 4, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 4, 1, 7 ], mathmode := "Text", name := "M", next := 27050, root := ~, start := 27042, stop := 27049 ), rec( content := " can be \ determined by taking an appropriate gcd.\n ", count := [ 3, 4, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := 0, count := [ 3, 4, 1, 8 ], mathmode := "Text", name := "P", next := 27107, root := ~, start := 27103, stop := 27106 ), rec( content := "\n\n \ In practice, the algorithm chooses in some sense ", count := [ 3, 4, 1, 8 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "b\ etter", count := [ 3, 4, 1, 8 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 4, 1, 8 ], mathmode := "Text", name := "Q", next := 27175, root := ~, start := 27162, stop := 27174 ), rec( content := "\n pr\ oducts ", count := [ 3, 4, 1, 8 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "P\ _k", count := [ 3, 4, 1, 8 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 4, 1, 8 ], mathmode := "Text", name := "M", next := 27199, root := ~, start := 27189, stop := 27198 ), rec( content := " of smal\ l primes rather than ", count := [ 3, 4, 1, 8 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "k\ !", count := [ 3, 4, 1, 8 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 4, 1, 8 ], mathmode := "Text", name := "M", next := 27237, root := ~, start := 27228, stop := 27236 ), rec( content := " as expo\ nents.\n After reaching the first stage limit with ", count := [ 3, 4, 1, 8 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "P\ _{Limit1}", count := [ 3, 4, 1, 8 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 4, 1, 8 ], mathmode := "Text", name := "M", next := 27315, root := ~, start := 27298, stop := 27314 ), rec( content := ", it\n \ considers further products ", count := [ 3, 4, 1, 8 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "P\ _{Limit1}q", count := [ 3, 4, 1, 8 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 4, 1, 8 ], mathmode := "Text", name := "M", next := 27369, root := ~, start := 27351, stop := 27368 ), rec( content := " for pri\ mes ", count := [ 3, 4, 1, 8 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "q\ ", count := [ 3, 4, 1, 8 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 4, 1, 8 ], mathmode := "Text", name := "M", next := 27394, root := ~, start := 27386, stop := 27393 ), rec( content := "\n up\ to the second stage limit ", count := [ 3, 4, 1, 8 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "L\ imit2", count := [ 3, 4, 1, 8 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 4, 1, 8 ], mathmode := "Text", name := "A", next := 27441, root := ~, start := 27428, stop := 27440 ), rec( content := ", which \ is usually set equal\n to something like 100 times the first stage limit.\n\ The prime ", count := [ 3, 4, 1, 8 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "q\ ", count := [ 3, 4, 1, 8 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 4, 1, 8 ], mathmode := "Text", name := "M", next := 27552, root := ~, start := 27544, stop := 27551 ), rec( content := " corresp\ onds to the largest prime factor of the\n order of the group ", count := [ 3, 4, 1, 8 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "E\ (a,b)/p", count := [ 3, 4, 1, 8 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 4, 1, 8 ], mathmode := "Text", name := "M", next := 27638, root := ~, start := 27623, stop := 27637 ), rec( content := ". ", count := [ 3, 4, 1, 8 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := 0, count := [ 3, 4, 1, 9 ], mathmode := "Text", name := "P", next := 27644, root := ~, start := 27640, stop := 27643 ), rec( content := "\n\n \ A prime divisor ", count := [ 3, 4, 1, 9 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "p\ ", count := [ 3, 4, 1, 9 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 4, 1, 9 ], mathmode := "Text", name := "M", next := 27674, root := ~, start := 27666, stop := 27673 ), rec( content := " is usua\ lly found if the largest prime factor\n of the order of one of the examined\ elliptic curve groups ", count := [ 3, 4, 1, 9 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "E\ (a,b)/p", count := [ 3, 4, 1, 9 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 4, 1, 9 ], mathmode := "Text", name := "M", next := 27797, root := ~, start := 27782, stop := 27796 ), rec( content := "\n is\ at most ", count := [ 3, 4, 1, 9 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "L\ imit2", count := [ 3, 4, 1, 9 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 4, 1, 9 ], mathmode := "Text", name := "A", next := 27826, root := ~, start := 27813, stop := 27825 ), rec( content := " and the\ second-largest one is at most\n ", count := [ 3, 4, 1, 9 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "L\ imit1", count := [ 3, 4, 1, 9 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 4, 1, 9 ], mathmode := "Text", name := "A", next := 27882, root := ~, start := 27869, stop := 27881 ), rec( content := ". Thus t\ rying a larger number of curves increases the chance\n of factoring ", count := [ 3, 4, 1, 9 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "n\ ", count := [ 3, 4, 1, 9 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 4, 1, 9 ], mathmode := "Text", name := "A", next := 27968, root := ~, start := 27960, stop := 27967 ), rec( content := " as well\ as choosing a larger value\n for ", count := [ 3, 4, 1, 9 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "L\ imit1", count := [ 3, 4, 1, 9 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 4, 1, 9 ], mathmode := "Text", name := "A", next := 28025, root := ~, start := 28012, stop := 28024 ), rec( content := " and/or \ ", count := [ 3, 4, 1, 9 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "L\ imit2", count := [ 3, 4, 1, 9 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 4, 1, 9 ], mathmode := "Text", name := "A", next := 28046, root := ~, start := 28033, stop := 28045 ), rec( content := ". It tur\ ns out to be not optimal\n either to try a large number of curves with very\ small ", count := [ 3, 4, 1, 9 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "L\ imit1", count := [ 3, 4, 1, 9 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 4, 1, 9 ], mathmode := "Text", name := "A", next := 28151, root := ~, start := 28138, stop := 28150 ), rec( content := "\n an\ d ", count := [ 3, 4, 1, 9 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "L\ imit2", count := [ 3, 4, 1, 9 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 4, 1, 9 ], mathmode := "Text", name := "A", next := 28173, root := ~, start := 28160, stop := 28172 ), rec( content := " or to t\ ry only a few curves with very large limits.\n (Compare with ", count := [ 3, 4, 1, 9 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( Func := "Factors\ Pminus1", Label := "Pollard's p-1" ), content := 0, count := [ 3, 4, 1, 9 ], mathmode := "Text", name := "Ref", next := 28327, root := ~, start := 28249, stop := 28326 ), rec( content := ".)\n \ ", count := [ 3, 4, 1, 9 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := 0, count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "P", next := 28338, root := ~, start := 28334, stop := 28337 ), rec( content := "\n\n \ The elements of the group ", count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "E\ (a,b)/n", count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "M", next := 28385, root := ~, start := 28370, stop := 28384 ), rec( content := " are the\ points ", count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "(\ x,y)", count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "M", next := 28413, root := ~, start := 28401, stop := 28412 ), rec( content := "\n gi\ ven by the solutions of ", count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "y\ ^2 = x^3 + ax + by", count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "PCD\ ATA", root := ~ ) ], count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "M", next := 28470, root := ~, start := 28444, stop := 28469 ), rec( content := " in the \ residue\n class ring (mod ", count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "n\ ", count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "M", next := 28519, root := ~, start := 28511, stop := 28518 ), rec( content := "), and a\ n additional point ", count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "\\ \infty", count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "M", next := 28559, root := ~, start := 28546, stop := 28558 ), rec( content := "\n at\ infinity, which serves as identity element.\n To turn this set into a grou\ p, define the product (although elliptic\n curve groups are usually written\ additively, I prefer using the\n multiplicative notation here to retain th\ e analogy\n to ", count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( Func := "Factors\ Pminus1", Label := "Pollard's p-1" ), content := 0, count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "Ref", next := 28864, root := ~, start := 28814, stop := 28863 ), rec( content := " and\n \ ", count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( Func := "Factors\ Pplus1", Label := "Williams' p+1" ), content := 0, count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "Ref", next := 28922, root := ~, start := 28873, stop := 28921 ), rec( content := ")\n o\ f two points ", count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "p\ _1", count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "M", next := 28952, root := ~, start := 28942, stop := 28951 ), rec( content := " and ", count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "p\ _2", count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "M", next := 28972, root := ~, start := 28962, stop := 28971 ), rec( content := " as foll\ ows:\n If ", count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "p\ _1 \\neq p_2", count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "M", next := 29011, root := ~, start := 28992, stop := 29010 ), rec( content := ", let ", count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "l\ ", count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "M", next := 29025, root := ~, start := 29017, stop := 29024 ), rec( content := " be the \ line through ", count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "p\ _1", count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "M", next := 29056, root := ~, start := 29046, stop := 29055 ), rec( content := "\n an\ d ", count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "p\ _2", count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "M", next := 29080, root := ~, start := 29070, stop := 29079 ), rec( content := ", otherw\ ise let ", count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "l\ ", count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "M", next := 29104, root := ~, start := 29096, stop := 29103 ), rec( content := " be the \ tangent to the\n curve ", count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "C\ ", count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "M", next := 29150, root := ~, start := 29142, stop := 29149 ), rec( content := " given b\ y the above equation in the point\n ", count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "p\ _1 = p_2", count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "M", next := 29212, root := ~, start := 29196, stop := 29211 ), rec( content := ". The li\ ne ", count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "l\ ", count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "M", next := 29231, root := ~, start := 29223, stop := 29230 ), rec( content := " interse\ cts ", count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "C\ ", count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "M", next := 29251, root := ~, start := 29243, stop := 29250 ), rec( content := " in a th\ ird\n point, say ", count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "p\ _3", count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "M", next := 29293, root := ~, start := 29283, stop := 29292 ), rec( content := ". If ", count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "l\ ", count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "M", next := 29306, root := ~, start := 29298, stop := 29305 ), rec( content := " does no\ t intersect the curve in\n a third affine point, then set ", count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "p\ _3 := \\infty", count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "PCDATA" , root := ~ ) ], count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "M", next := 29394, root := ~, start := 29374, stop := 29393 ), rec( content := ".\n D\ efine ", count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "p\ _1 \\cdot p_2", count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "PCDATA" , root := ~ ) ], count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "M", next := 29427, root := ~, start := 29407, stop := 29426 ), rec( content := " by the \ image of ", count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "p\ _3", count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "M", next := 29459, root := ~, start := 29449, stop := 29458 ), rec( content := " under\n\ the reflection across the ", count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "x\ ", count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "M", next := 29504, root := ~, start := 29496, stop := 29503 ), rec( content := "-axis.\n\ Define the product of any curve point ", count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "p\ ", count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "M", next := 29561, root := ~, start := 29553, stop := 29560 ), rec( content := " and ", count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "\\ \infty", count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "M", next := 29579, root := ~, start := 29566, stop := 29578 ), rec( content := " by\n \ ", count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "p\ ", count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "M", next := 29595, root := ~, start := 29587, stop := 29594 ), rec( content := " itself.\ This -- more or less obviously, checking associativity\n requires some cal\ culation -- turns the set of points on the given curve\n into an abelian gr\ oup ", count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "E\ (a,b)/n", count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "M", next := 29776, root := ~, start := 29761, stop := 29775 ), rec( content := ". ", count := [ 3, 4, 1, 10 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := 0, count := [ 3, 4, 1, 11 ], mathmode := "Text", name := "P", next := 29782, root := ~, start := 29778, stop := 29781 ), rec( content := "\n\n \ However, the calculations are done in\n ", count := [ 3, 4, 1, 11 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( Key := "projecti\ ve coordinates" ), content := [ rec( content := "projective coordinates", count := [ 3, 4, 1, 11 ], mathmode := \ "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 4, 1, 11 ], mathmode := "Text", name := "Index", next := 29896, root := ~, start := 29830, stop := 29895 ), rec( content := "\n pr\ ojective coordinates to have an explicit representation of the\n identity e\ lement and to avoid calculating inverses (mod ", count := [ 3, 4, 1, 11 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "n\ ", count := [ 3, 4, 1, 11 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 4, 1, 11 ], mathmode := "Text", name := "M", next := 30039, root := ~, start := 30031, stop := 30038 ), rec( content := ")\n f\ or the group operation. Otherwise this would require using an\n ", count := [ 3, 4, 1, 11 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "O\ ((log \\ n)^3)", count := [ 3, 4, 1, 11 ], mathmode := "Text", name := "PCDATA\ ", root := ~ ) ], count := [ 3, 4, 1, 11 ], mathmode := "Text", name := "M", next := 30133, root := ~, start := 30112, stop := 30132 ), rec( content := "-algorit\ hm, while multiplication (mod ", count := [ 3, 4, 1, 11 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "n\ ", count := [ 3, 4, 1, 11 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 4, 1, 11 ], mathmode := "Text", name := "M", next := 30184, root := ~, start := 30176, stop := 30183 ), rec( content := ")\n i\ s only ", count := [ 3, 4, 1, 11 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "O\ ((log \\ n)^2)", count := [ 3, 4, 1, 11 ], mathmode := "Text", name := "PCDATA\ ", root := ~ ) ], count := [ 3, 4, 1, 11 ], mathmode := "Text", name := "M", next := 30219, root := ~, start := 30198, stop := 30218 ), rec( content := ". The co\ rresponding equation is given by\n ", count := [ 3, 4, 1, 11 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "b\ Y^2Z = X^3 + aX^2Z + XZ^2", count := [ 3, 4, 1, 11 ], mathmode := "Text", name := "PCD\ ATA", root := ~ ) ], count := [ 3, 4, 1, 11 ], mathmode := "Text", name := "M", next := 30297, root := ~, start := 30264, stop := 30296 ), rec( content := ". This f\ orm allows even more efficient\n computations than the\n ", count := [ 3, 4, 1, 11 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( Key := "Weierstr\ ass model" ), content := [ rec( content := "Weierstrass model", count := [ 3, 4, 1, 11 ], mathmode := \ "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 4, 1, 11 ], mathmode := "Text", name := "Index", next := 30422, root := ~, start := 30366, stop := 30421 ), rec( content := "\n We\ ierstrass model ", count := [ 3, 4, 1, 11 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "Y\ ^2Z = X^3 + aXZ^2 + bZ^3", count := [ 3, 4, 1, 11 ], mathmode := "Text", name := "PCD\ ATA", root := ~ ) ], count := [ 3, 4, 1, 11 ], mathmode := "Text", name := "M", next := 30477, root := ~, start := 30445, stop := 30476 ), rec( content := ", which \ is the\n projective equivalent of the affine representation\n ", count := [ 3, 4, 1, 11 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "y\ ^2 = x^3 + ax + by", count := [ 3, 4, 1, 11 ], mathmode := "Text", name := "PCD\ ATA", root := ~ ) ], count := [ 3, 4, 1, 11 ], mathmode := "Text", name := "M", next := 30577, root := ~, start := 30551, stop := 30576 ), rec( content := " mention\ ed above. The algorithm only keeps\n track of two of the three coordinates,\ namely ", count := [ 3, 4, 1, 11 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "X\ ", count := [ 3, 4, 1, 11 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 4, 1, 11 ], mathmode := "Text", name := "M", next := 30678, root := ~, start := 30670, stop := 30677 ), rec( content := " and ", count := [ 3, 4, 1, 11 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "Z\ ", count := [ 3, 4, 1, 11 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 4, 1, 11 ], mathmode := "Text", name := "M", next := 30696, root := ~, start := 30688, stop := 30695 ), rec( content := ".\n T\ he curves are chosen in a way that ensures the order of the\n corresponding\ group to be divisible by 12. This increases the chance\n that it is smoot\ h enough to find a factor of ", count := [ 3, 4, 1, 11 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "n\ ", count := [ 3, 4, 1, 11 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 4, 1, 11 ], mathmode := "Text", name := "M", next := 30903, root := ~, start := 30895, stop := 30902 ), rec( content := ".\n T\ he implementation follows the description of R. P. Brent given in\n ", count := [ 3, 4, 1, 11 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( Key := "Brent96"\ ), content := 0, count := [ 3, 4, 1, 11 ], mathmode := "Text", name := "Cite", next := 31001, root := ~, start := 30980, stop := 31000 ), rec( content := ", pp. 5 \ -- 8. In terms of this paper,\n for the second stage the ", count := [ 3, 4, 1, 11 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "i\ mproved standard continuation", count := [ 3, 4, 1, 11 ], mathmode := "Text", name := "PCD\ ATA", root := ~ ) ], count := [ 3, 4, 1, 11 ], mathmode := "Text", name := "Q", next := 31105, root := ~, start := 31068, stop := 31104 ), rec( content := " is used\ .\n", count := [ 3, 4, 1, 11 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "\\ n\ngap> FactorsECM(2^256+1,100,10000,1000000,100);\n[ [ 1238926361552897, \n \ 93461639715357977769163558199606896584051237541638188580280321 ]\n , [ \ ] ]\n\n", count := [ 3, 4, 1, 12 ], name := "PCDATA", root := ~ ) ], count := [ 3, 4, 1, 12 ], mathmode := "Text", name := "Example", next := 31304, root := ~, start := 31115, stop := 31303 ), rec( content := "\n ", count := [ 3, 4, 1, 13 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 4, 1, 5 ], mathmode := "Text", name := "Description", next := 31321, root := ~, start := 25266, stop := 31320 ) ], count := [ 3, 4, 1, 1 ], mathmode := "Text", name := "ManSection", next := 31335, root := ~, start := 24797, stop := 31334 ), rec( content := "\n\n", count := [ 3, 4, 1, 13 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 4, 0, 1 ], mathmode := "Text", name := "Section", next := 31347, root := ~, start := 24634, stop := 31346 ), rec( content := "\n\n", count := [ 3, 4, 1, 13 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( content := " ###############################\ ##################################### ", count := [ 3, 4, 1, 13 ], mathmode := "Text", name := "XMLCOMMENT", root := ~ ), rec( content := "\n\n", count := [ 3, 4, 1, 13 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( Label := "sec:CFRAC" ), content := [ rec( content := "\n", count := [ 3, 5, 0, 1 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "The Continued Fra\ ction Algorithm (CFRAC)", count := [ 3, 5, 0, 2 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 5, 0, 2 ], mathmode := "Text", name := "Heading", next := 31515, root := ~, start := 31456, stop := 31514 ), rec( content := "\n\n", count := [ 3, 5, 0, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( Key := "Continued Fraction Algor\ ithm (CFRAC)" ), content := [ rec( content := "\n Continued Fraction Algorith\ m (CFRAC)\n", count := [ 3, 5, 0, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 5, 0, 3 ], mathmode := "Text", name := "Index", next := 31615, root := ~, start := 31517, stop := 31614 ), rec( content := "\n\n", count := [ 3, 5, 0, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( attributes := rec( Arg := "n", Label := "Continued Frac\ tion Algorithm, CFRAC", Name := "FactorsCFRAC" ), content := 0, count := [ 3, 5, 1, 2 ], mathmode := "Text", name := "Func", next := 31719, root := ~, start := 31632, stop := 31718 ), rec( attributes := rec( Arg := "n", Label := "shorthand for \ FactorsCFRAC", Name := "CFRAC" ), content := 0, count := [ 3, 5, 1, 4 ], mathmode := "Text", name := "Func", next := 31793, root := ~, start := 31722, stop := 31792 ), rec( attributes := rec( ), content := [ rec( content := "\n A l\ ist of the prime factors of ", count := [ 3, 5, 1, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "n\ ", count := [ 3, 5, 1, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 5, 1, 5 ], mathmode := "Text", name := "A", next := 31856, root := ~, start := 31848, stop := 31855 ), rec( content := ".\n ", count := [ 3, 5, 1, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 5, 1, 5 ], mathmode := "Text", name := "Returns", next := 31870, root := ~, start := 31798, stop := 31869 ), rec( attributes := rec( ), content := [ rec( content := "\n Thi\ s function tries to factor ", count := [ 3, 5, 1, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "n\ ", count := [ 3, 5, 1, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 5, 1, 5 ], mathmode := "Text", name := "A", next := 31929, root := ~, start := 31921, stop := 31928 ), rec( content := " using t\ he Continued Fraction\n Algorithm (CFRAC), also known as Brillhart-Morrison\ Algorithm.\n In case of failure an error is signalled. ", count := [ 3, 5, 1, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := 0, count := [ 3, 5, 1, 6 ], mathmode := "Text", name := "P", next := 32076, root := ~, start := 32072, stop := 32075 ), rec( content := "\n\n \ Caution: The runtime of this function depends only on the size\n of ", count := [ 3, 5, 1, 6 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "n\ ", count := [ 3, 5, 1, 6 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 5, 1, 6 ], mathmode := "Text", name := "A", next := 32165, root := ~, start := 32157, stop := 32164 ), rec( content := ", and no\ t on the size of the factors.\n Thus if a small factor is not found during \ the preprocessing\n which is done before invoking the sieving process, the \ runtime is\n as long as if ", count := [ 3, 5, 1, 6 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "n\ ", count := [ 3, 5, 1, 6 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 5, 1, 6 ], mathmode := "Text", name := "A", next := 32364, root := ~, start := 32356, stop := 32363 ), rec( content := " would h\ ave two prime factors of roughly\n equal size. ", count := [ 3, 5, 1, 6 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := 0, count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "P", next := 32425, root := ~, start := 32421, stop := 32424 ), rec( content := "\n\n \ The Continued Fraction Algorithm tries to find integers ", count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "x\ ", count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "M", next := 32495, root := ~, start := 32487, stop := 32494 ), rec( content := "\n an\ d ", count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "y\ ", count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "M", next := 32517, root := ~, start := 32509, stop := 32516 ), rec( content := " such th\ at ", count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "x\ ^2 \\equiv y^2", count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "PCDATA" , root := ~ ) ], count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "M", next := 32549, root := ~, start := 32528, stop := 32548 ), rec( content := " (mod " , count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "n\ ", count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "M", next := 32568, root := ~, start := 32560, stop := 32567 ), rec( content := "),\n \ but not ", count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "\\ \pm x \\equiv \\pm y", count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "PCD\ ATA", root := ~ ) ], count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "M", next := 32608, root := ~, start := 32583, stop := 32607 ), rec( content := " (mod " , count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "n\ ", count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "M", next := 32627, root := ~, start := 32619, stop := 32626 ), rec( content := ").\n \ In this situation, taking ", count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "\\ \gcd(x - y,n)", count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "M", next := 32680, root := ~, start := 32660, stop := 32679 ), rec( content := " yields \ a nontrivial\n divisor of ", count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "n\ ", count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "M", next := 32729, root := ~, start := 32721, stop := 32728 ), rec( content := ". For de\ termining such a pair ", count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "(\ x,y)", count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "M", next := 32771, root := ~, start := 32759, stop := 32770 ), rec( content := ",\n t\ he algorithm uses the continued fraction expansion of the square root\n of�\ �", count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ) , rec( attributes := rec( ), content := [ rec( content := "n\ ", count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "M", next := 32868, root := ~, start := 32860, stop := 32867 ), rec( content := ". If ", count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "x\ _i/y_i", count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "M", next := 32887, root := ~, start := 32873, stop := 32886 ), rec( content := " is a\n \ ", count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( Key := "continue\ d fraction approximation" ), content := [ rec( content := "\n continued f\ raction approximation\n ", count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "PCD\ ATA", root := ~ ) ], count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "Index", next := 32995, root := ~, start := 32897, stop := 32994 ), rec( content := "\n co\ ntinued fraction approximation of the square root of ", count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "n\ ", count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "M", next := 33068, root := ~, start := 33060, stop := 33067 ), rec( content := ",\n t\ hen ", count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "c\ _i := x_i^2 - ny_i^2", count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "PCD\ ATA", root := ~ ) ], count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "M", next := 33107, root := ~, start := 33079, stop := 33106 ), rec( content := " is boun\ ded by a small constant times\n the square root of ", count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "n\ ", count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "M", next := 33181, root := ~, start := 33173, stop := 33180 ), rec( content := ".\n T\ he algorithm tries to find as many ", count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "c\ _i", count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "M", next := 33233, root := ~, start := 33223, stop := 33232 ), rec( content := " as poss\ ible which factor\n completely over a chosen\n ", count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( Key := "factor b\ ase" ), content := [ rec( content := "factor base", count := [ 3, 5, 1, 7 ], mathmode := \ "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "Index", next := 33336, root := ~, start := 33292, stop := 33335 ), rec( content := "\n fa\ ctor base (a list of small primes) or with only one factor not in the\n fac\ tor base. The latter ones can be used if and only if a second\n ", count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "c\ _i", count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "M", next := 33496, root := ~, start := 33486, stop := 33495 ), rec( content := " with th\ e same ", count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "l\ arge", count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "Q", next := 33523, root := ~, start := 33511, stop := 33522 ), rec( content := " factor \ is found.\n ", count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( Key := "factor b\ ase", Subkey := "large factors" ), content := [ rec( content := "factor base", count := [ 3, 5, 1, 7 ], mathmode := \ "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "Index", next := 33612, root := ~, start := 33545, stop := 33611 ), rec( content := "\n On\ ce enough values ", count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "c\ _i", count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "M", next := 33646, root := ~, start := 33636, stop := 33645 ), rec( content := " have be\ en factored, as a final stage\n ", count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( Key := "Gaussian\ Elimination" ), content := [ rec( content := "Gaussian Elimination", count := [ 3, 5, 1, 7 ], mathmode := \ "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "Index", next := 33750, root := ~, start := 33688, stop := 33749 ), rec( content := "\n Ga\ ussian Elimination over GF(2) is used to determine which of the\n congruenc\ es ", count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "x\ _i^2 \\equiv c_i", count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "PCDAT\ A", root := ~ ) ], count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "M", next := 33860, root := ~, start := 33837, stop := 33859 ), rec( content := " (mod " , count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "n\ ", count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "M", next := 33879, root := ~, start := 33871, stop := 33878 ), rec( content := ") have t\ o be\n multiplied together to obtain a congruence of the desired form\n \ ", count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "x\ ^2 \\equiv y^2", count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "PCDATA" , root := ~ ) ], count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "M", next := 33984, root := ~, start := 33963, stop := 33983 ), rec( content := " (mod " , count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "n\ ", count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "M", next := 34003, root := ~, start := 33995, stop := 34002 ), rec( content := ").\n \ Let ", count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "M\ ", count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "M", next := 34022, root := ~, start := 34014, stop := 34021 ), rec( content := " be the \ corresponding matrix. Then the entries\n of ", count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "M\ ", count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "M", next := 34089, root := ~, start := 34081, stop := 34088 ), rec( content := " are giv\ en by ", count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "M\ _{ij} = 1", count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "M", next := 34120, root := ~, start := 34103, stop := 34119 ), rec( content := " if an o\ dd power of\n the ", count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "j\ ", count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "M", next := 34156, root := ~, start := 34148, stop := 34155 ), rec( content := "-th elem\ ent of the factor base divides the ", count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "i\ ", count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "M", next := 34207, root := ~, start := 34199, stop := 34206 ), rec( content := "-th\n \ usable factored value, and ", count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "M\ _{ij} = 0", count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "M", next := 34259, root := ~, start := 34242, stop := 34258 ), rec( content := " otherwi\ se.\n To obtain the desired congruence, it is necessary that the rows\n \ of ", count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "M\ ", count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "M", next := 34359, root := ~, start := 34351, stop := 34358 ), rec( content := " are lin\ early dependent.\n In other words, this means that the number of factored " , count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "c\ _i", count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "M", next := 34453, root := ~, start := 34443, stop := 34452 ), rec( content := "\n ne\ eds to be larger than the rank of ", count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "M\ ", count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "M", next := 34507, root := ~, start := 34499, stop := 34506 ), rec( content := ", which \ is\n approximately given by the size of the factor base. (Compare\n with\  ", count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( Func := "Factors\ MPQS", Label := "Multiple Polynomial Quadratic Sieve, MPQS" ), content := 0, count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "Ref", next := 34691, root := ~, start := 34597, stop := 34690 ), rec( content := ".)\n", count := [ 3, 5, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "\\ n\ngap> FactorsCFRAC( Factorial(34) - 1 );\n[ 10398560889846739639, 2839169786\ 7333973241 ]\n\n", count := [ 3, 5, 1, 8 ], name := "PCDATA", root := ~ ) ], count := [ 3, 5, 1, 8 ], mathmode := "Text", name := "Example", next := 34815, root := ~, start := 34694, stop := 34814 ), rec( content := "\n ", count := [ 3, 5, 1, 9 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 5, 1, 5 ], mathmode := "Text", name := "Description", next := 34832, root := ~, start := 31873, stop := 34831 ) ], count := [ 3, 5, 1, 1 ], mathmode := "Text", name := "ManSection", next := 34846, root := ~, start := 31617, stop := 34845 ), rec( content := "\n\n", count := [ 3, 5, 1, 9 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 5, 0, 1 ], mathmode := "Text", name := "Section", next := 34858, root := ~, start := 31428, stop := 34857 ), rec( content := "\n\n", count := [ 3, 5, 1, 9 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( content := " ###############################\ ##################################### ", count := [ 3, 5, 1, 9 ], mathmode := "Text", name := "XMLCOMMENT", root := ~ ), rec( content := "\n\n", count := [ 3, 5, 1, 9 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( Label := "sec:MPQS" ), content := [ rec( content := "\n", count := [ 3, 6, 0, 1 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "The Multiple Poly\ nomial Quadratic Sieve (MPQS)", count := [ 3, 6, 0, 2 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 6, 0, 2 ], mathmode := "Text", name := "Heading", next := 35031, root := ~, start := 34966, stop := 35030 ), rec( content := "\n\n", count := [ 3, 6, 0, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( Key := "Multiple Polynomial Quad\ ratic Sieve (MPQS)" ), content := [ rec( content := "\n Multiple Polynomial Q\ uadratic Sieve (MPQS)\n", count := [ 3, 6, 0, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 6, 0, 3 ], mathmode := "Text", name := "Index", next := 35143, root := ~, start := 35033, stop := 35142 ), rec( content := "\n\n", count := [ 3, 6, 0, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( attributes := rec( Arg := "n", Label := "Multiple Polyn\ omial Quadratic Sieve, MPQS", Name := "FactorsMPQS" ), content := 0, count := [ 3, 6, 1, 2 ], mathmode := "Text", name := "Func", next := 35252, root := ~, start := 35160, stop := 35251 ), rec( attributes := rec( Arg := "n", Label := "shorthand for \ FactorsMPQS", Name := "MPQS" ), content := 0, count := [ 3, 6, 1, 4 ], mathmode := "Text", name := "Func", next := 35324, root := ~, start := 35255, stop := 35323 ), rec( attributes := rec( ), content := [ rec( content := "\n A l\ ist of the prime factors of ", count := [ 3, 6, 1, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "n\ ", count := [ 3, 6, 1, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 6, 1, 5 ], mathmode := "Text", name := "A", next := 35387, root := ~, start := 35379, stop := 35386 ), rec( content := ".\n ", count := [ 3, 6, 1, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 6, 1, 5 ], mathmode := "Text", name := "Returns", next := 35401, root := ~, start := 35329, stop := 35400 ), rec( attributes := rec( ), content := [ rec( content := "\n Thi\ s function tries to factor ", count := [ 3, 6, 1, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "n\ ", count := [ 3, 6, 1, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 6, 1, 5 ], mathmode := "Text", name := "A", next := 35460, root := ~, start := 35452, stop := 35459 ), rec( content := " using t\ he Single Large Prime\n Variation of the Multiple Polynomial Quadratic Siev\ e (MPQS).\n In case of failure an error is signalled. ", count := [ 3, 6, 1, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := 0, count := [ 3, 6, 1, 6 ], mathmode := "Text", name := "P", next := 35605, root := ~, start := 35601, stop := 35604 ), rec( content := "\n\n \ Caution: The runtime of this function depends only on the size\n of ", count := [ 3, 6, 1, 6 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "n\ ", count := [ 3, 6, 1, 6 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 6, 1, 6 ], mathmode := "Text", name := "A", next := 35694, root := ~, start := 35686, stop := 35693 ), rec( content := ", and no\ t on the size of the factors.\n Thus if a small factor is not found during \ the preprocessing\n which is done before invoking the sieving process, the \ runtime is\n as long as if ", count := [ 3, 6, 1, 6 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "n\ ", count := [ 3, 6, 1, 6 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 6, 1, 6 ], mathmode := "Text", name := "A", next := 35893, root := ~, start := 35885, stop := 35892 ), rec( content := " would h\ ave two prime factors of roughly\n equal size. ", count := [ 3, 6, 1, 6 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := 0, count := [ 3, 6, 1, 7 ], mathmode := "Text", name := "P", next := 35954, root := ~, start := 35950, stop := 35953 ), rec( content := "\n\n \ The intermediate results of a computation can be saved by\n interrupting it\ with ", count := [ 3, 6, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "[\ Ctrl][C]", count := [ 3, 6, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 6, 1, 7 ], mathmode := "Text", name := "C", next := 36059, root := ~, start := 36043, stop := 36058 ), rec( content := " and cal\ ling ", count := [ 3, 6, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "P\ ause();", count := [ 3, 6, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 6, 1, 7 ], mathmode := "Text", name := "C", next := 36087, root := ~, start := 36072, stop := 36086 ), rec( content := "\n fr\ om the break loop. This causes all data needed for resuming\n the computati\ on again to be pushed as a record ", count := [ 3, 6, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "M\ PQSTmp", count := [ 3, 6, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 6, 1, 7 ], mathmode := "Text", name := "A", next := 36219, root := ~, start := 36205, stop := 36218 ), rec( content := "\n on\ the options stack.\n When called again with the same argument ", count := [ 3, 6, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "n\ ", count := [ 3, 6, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 6, 1, 7 ], mathmode := "Text", name := "A", next := 36299, root := ~, start := 36291, stop := 36298 ), rec( content := ", ", count := [ 3, 6, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "F\ actorsMPQS", count := [ 3, 6, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 6, 1, 7 ], mathmode := "Text", name := "C", next := 36319, root := ~, start := 36301, stop := 36318 ), rec( content := "\n ta\ kes the record from the options stack and continues with the previously\n c\ omputed factorization data. For continuing the factorization process\n in a\ nother session, one needs to write this record to a file.\n This can be don\ e by the function ", count := [ 3, 6, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "S\ aveMPQSTmp(", count := [ 3, 6, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes :\ = rec( ), content := [ rec( content := "filename", count := [ 3, 6, 1, 7 ], math\ mode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 6, 1, 7 ], mathmode := \ "Text", name := "A", next := 36605, root := ~, start := 36590, stop := 36604 ) , rec( content := "\ )", count := [ 3, 6, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 6, 1, 7 ], mathmode := "Text", name := "C", next := 36610, root := ~, start := 36575, stop := 36609 ), rec( content := ".\n T\ he file written by this function can be read by the standard\n ", count := [ 3, 6, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "R\ ead", count := [ 3, 6, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 6, 1, 7 ], mathmode := "Text", name := "C", next := 36693, root := ~, start := 36682, stop := 36692 ), rec( content := "-functio\ n of ", count := [ 3, 6, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "G\ AP", count := [ 3, 6, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 6, 1, 7 ], mathmode := "Text", name := "Package", next := 23, root := ~, start := 1, stop := 22 ), rec( content := ". ", count := [ 3, 6, 1, 7 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := 0, count := [ 3, 6, 1, 8 ], mathmode := "Text", name := "P", next := 36722, root := ~, start := 36718, stop := 36721 ), rec( content := "\n\n \ The Multiple Polynomial Quadratic Sieve tries to find integers ", count := [ 3, 6, 1, 8 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "x\ ", count := [ 3, 6, 1, 8 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 6, 1, 8 ], mathmode := "Text", name := "M", next := 36799, root := ~, start := 36791, stop := 36798 ), rec( content := "\n an\ d ", count := [ 3, 6, 1, 8 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "y\ ", count := [ 3, 6, 1, 8 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 6, 1, 8 ], mathmode := "Text", name := "M", next := 36821, root := ~, start := 36813, stop := 36820 ), rec( content := " such th\ at ", count := [ 3, 6, 1, 8 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "x\ ^2 \\equiv y^2", count := [ 3, 6, 1, 8 ], mathmode := "Text", name := "PCDATA" , root := ~ ) ], count := [ 3, 6, 1, 8 ], mathmode := "Text", name := "M", next := 36853, root := ~, start := 36832, stop := 36852 ), rec( content := " (mod " , count := [ 3, 6, 1, 8 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "n\ ", count := [ 3, 6, 1, 8 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 6, 1, 8 ], mathmode := "Text", name := "M", next := 36872, root := ~, start := 36864, stop := 36871 ), rec( content := "),\n \ but not ", count := [ 3, 6, 1, 8 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "\\ \pm x \\equiv \\pm y", count := [ 3, 6, 1, 8 ], mathmode := "Text", name := "PCD\ ATA", root := ~ ) ], count := [ 3, 6, 1, 8 ], mathmode := "Text", name := "M", next := 36912, root := ~, start := 36887, stop := 36911 ), rec( content := " (mod " , count := [ 3, 6, 1, 8 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "n\ ", count := [ 3, 6, 1, 8 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 6, 1, 8 ], mathmode := "Text", name := "M", next := 36931, root := ~, start := 36923, stop := 36930 ), rec( content := ").\n \ In this situation, taking ", count := [ 3, 6, 1, 8 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "\\ \gcd(x - y,n)", count := [ 3, 6, 1, 8 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 6, 1, 8 ], mathmode := "Text", name := "M", next := 36984, root := ~, start := 36964, stop := 36983 ), rec( content := " yields \ a nontrivial\n divisor of ", count := [ 3, 6, 1, 8 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "n\ ", count := [ 3, 6, 1, 8 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 6, 1, 8 ], mathmode := "Text", name := "M", next := 37033, root := ~, start := 37025, stop := 37032 ), rec( content := ". For de\ termining such a pair ", count := [ 3, 6, 1, 8 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "(\ x,y)", count := [ 3, 6, 1, 8 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 6, 1, 8 ], mathmode := "Text", name := "M", next := 37075, root := ~, start := 37063, stop := 37074 ), rec( content := ",\n t\ he algorithm chooses polynomials ", count := [ 3, 6, 1, 8 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "f\ _a", count := [ 3, 6, 1, 8 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 6, 1, 8 ], mathmode := "Text", name := "M", next := 37125, root := ~, start := 37115, stop := 37124 ), rec( content := " of the \ form\n ", count := [ 3, 6, 1, 8 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "f\ _a(r) = ar^2 + 2br + c", count := [ 3, 6, 1, 8 ], mathmode := "Text", name := "PCD\ ATA", root := ~ ) ], count := [ 3, 6, 1, 8 ], mathmode := "Text", name := "M", next := 37172, root := ~, start := 37142, stop := 37171 ), rec( content := " with su\ itably chosen coefficients\n ", count := [ 3, 6, 1, 8 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "a\ ", count := [ 3, 6, 1, 8 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 6, 1, 8 ], mathmode := "Text", name := "M", next := 37219, root := ~, start := 37211, stop := 37218 ), rec( content := ", ", count := [ 3, 6, 1, 8 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "b\ ", count := [ 3, 6, 1, 8 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 6, 1, 8 ], mathmode := "Text", name := "M", next := 37229, root := ~, start := 37221, stop := 37228 ), rec( content := " and ", count := [ 3, 6, 1, 8 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "c\ ", count := [ 3, 6, 1, 8 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 6, 1, 8 ], mathmode := "Text", name := "M", next := 37247, root := ~, start := 37239, stop := 37246 ), rec( content := " which s\ atisfy ", count := [ 3, 6, 1, 8 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "b\ ^2 \\equiv n", count := [ 3, 6, 1, 8 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 6, 1, 8 ], mathmode := "Text", name := "M", next := 37281, root := ~, start := 37262, stop := 37280 ), rec( content := "\n (m\ od ", count := [ 3, 6, 1, 8 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "a\ ", count := [ 3, 6, 1, 8 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 6, 1, 8 ], mathmode := "Text", name := "M", next := 37304, root := ~, start := 37296, stop := 37303 ), rec( content := ") and ", count := [ 3, 6, 1, 8 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "c\ = (b^2 - n)/a", count := [ 3, 6, 1, 8 ], mathmode := "Text", name := "PCDATA" , root := ~ ) ], count := [ 3, 6, 1, 8 ], mathmode := "Text", name := "M", next := 37332, root := ~, start := 37310, stop := 37331 ), rec( content := ".\n T\ he identity ", count := [ 3, 6, 1, 8 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "a\ \\cdot f_a(r) = (ar + b)^2 - n", count := [ 3, 6, 1, 8 ], mathmode := "Text", name := "PCD\ ATA", root := ~ ) ], count := [ 3, 6, 1, 8 ], mathmode := "Text", name := "M", next := 37389, root := ~, start := 37351, stop := 37388 ), rec( content := " yields\\ n a congruence (mod ", count := [ 3, 6, 1, 8 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "n\ ", count := [ 3, 6, 1, 8 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 6, 1, 8 ], mathmode := "Text", name := "M", next := 37432, root := ~, start := 37424, stop := 37431 ), rec( content := ") with a\ perfect square on one side\n and ", count := [ 3, 6, 1, 8 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "a\ \\cdot f_a(r)", count := [ 3, 6, 1, 8 ], mathmode := "Text", name := "PCDATA" , root := ~ ) ], count := [ 3, 6, 1, 8 ], mathmode := "Text", name := "M", next := 37497, root := ~, start := 37476, stop := 37496 ), rec( content := " on the \ other. The algorithm uses a sieving\n technique similar to the Sieve of Era\ tosthenes over an appropriately\n chosen\n ", count := [ 3, 6, 1, 8 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( Key := "sieving \ interval" ), content := [ rec( content := "sieving interval", count := [ 3, 6, 1, 8 ], mathmode := \ "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 6, 1, 8 ], mathmode := "Text", name := "Index", next := 37683, root := ~, start := 37629, stop := 37682 ), rec( content := "\n si\ eving interval to search for factorizations of values ", count := [ 3, 6, 1, 8 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "f\ _a(r)", count := [ 3, 6, 1, 8 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 6, 1, 8 ], mathmode := "Text", name := "M", next := 37757, root := ~, start := 37744, stop := 37756 ), rec( content := "\n ov\ er a chosen factor base. Any two factorizations with the same single\n ", count := [ 3, 6, 1, 8 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "l\ arge", count := [ 3, 6, 1, 8 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 6, 1, 8 ], mathmode := "Text", name := "Q", next := 37849, root := ~, start := 37837, stop := 37848 ), rec( content := " factor \ which does not belong to the factor base can also be\n used. Taking more po\ lynomials and hence shorter sieving intervals has\n the advantage of having\ to factor smaller values ", count := [ 3, 6, 1, 8 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "f\ _a(r)", count := [ 3, 6, 1, 8 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 6, 1, 8 ], mathmode := "Text", name := "M", next := 38050, root := ~, start := 38037, stop := 38049 ), rec( content := " over th\ e\n factor base. ", count := [ 3, 6, 1, 8 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := 0, count := [ 3, 6, 1, 9 ], mathmode := "Text", name := "P", next := 38081, root := ~, start := 38077, stop := 38080 ), rec( content := "\n\n \ Once enough values ", count := [ 3, 6, 1, 9 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "f\ _a(r)", count := [ 3, 6, 1, 9 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 6, 1, 9 ], mathmode := "Text", name := "M", next := 38119, root := ~, start := 38106, stop := 38118 ), rec( content := " have be\ en factored, as a final stage\n Gaussian Elimination over GF(2) is used to \ determine which congruences\n have to be multiplied together to obtain a co\ ngruence of the desired\n form ", count := [ 3, 6, 1, 9 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "x\ ^2 \\equiv y^2", count := [ 3, 6, 1, 9 ], mathmode := "Text", name := "PCDATA" , root := ~ ) ], count := [ 3, 6, 1, 9 ], mathmode := "Text", name := "M", next := 38335, root := ~, start := 38314, stop := 38334 ), rec( content := " (mod " , count := [ 3, 6, 1, 9 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "n\ ", count := [ 3, 6, 1, 9 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 6, 1, 9 ], mathmode := "Text", name := "M", next := 38354, root := ~, start := 38346, stop := 38353 ), rec( content := "). Let " , count := [ 3, 6, 1, 9 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "M\ ", count := [ 3, 6, 1, 9 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 6, 1, 9 ], mathmode := "Text", name := "M", next := 38369, root := ~, start := 38361, stop := 38368 ), rec( content := " be the\\ n corresponding matrix. Then the entries of ", count := [ 3, 6, 1, 9 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "M\ ", count := [ 3, 6, 1, 9 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 6, 1, 9 ], mathmode := "Text", name := "M", next := 38436, root := ~, start := 38428, stop := 38435 ), rec( content := " are giv\ en by\n ", count := [ 3, 6, 1, 9 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "M\ _{ij} = 1", count := [ 3, 6, 1, 9 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 6, 1, 9 ], mathmode := "Text", name := "M", next := 38471, root := ~, start := 38454, stop := 38470 ), rec( content := " if an o\ dd power of the ", count := [ 3, 6, 1, 9 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "j\ ", count := [ 3, 6, 1, 9 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 6, 1, 9 ], mathmode := "Text", name := "M", next := 38503, root := ~, start := 38495, stop := 38502 ), rec( content := "-th elem\ ent of the\n factor base divides the ", count := [ 3, 6, 1, 9 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "i\ ", count := [ 3, 6, 1, 9 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 6, 1, 9 ], mathmode := "Text", name := "M", next := 38558, root := ~, start := 38550, stop := 38557 ), rec( content := "-th usab\ le factored value, and\n ", count := [ 3, 6, 1, 9 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "M\ _{ij} = 0", count := [ 3, 6, 1, 9 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 6, 1, 9 ], mathmode := "Text", name := "M", next := 38610, root := ~, start := 38593, stop := 38609 ), rec( content := " otherwi\ se.\n To obtain the desired congruence, it is necessary that the rows\n \ of ", count := [ 3, 6, 1, 9 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "M\ ", count := [ 3, 6, 1, 9 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 6, 1, 9 ], mathmode := "Text", name := "M", next := 38710, root := ~, start := 38702, stop := 38709 ), rec( content := " are lin\ early dependent.\n In other words, this means that the number of usable fac\ torizations of\n values ", count := [ 3, 6, 1, 9 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "f\ _a(r)", count := [ 3, 6, 1, 9 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 6, 1, 9 ], mathmode := "Text", name := "M", next := 38834, root := ~, start := 38821, stop := 38833 ), rec( content := " needs t\ o be larger than the rank of ", count := [ 3, 6, 1, 9 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "M\ ", count := [ 3, 6, 1, 9 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 6, 1, 9 ], mathmode := "Text", name := "M", next := 38884, root := ~, start := 38876, stop := 38883 ), rec( content := ".\n T\ he latter is approximately equal to the size of the factor base.\n (Compare\ with ", count := [ 3, 6, 1, 9 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( Func := "Factors\ CFRAC", Label := "Continued Fraction Algorithm, CFRAC" ), content := 0, count := [ 3, 6, 1, 9 ], mathmode := "Text", name := "Ref", next := 39077, root := ~, start := 38979, stop := 39076 ), rec( content := ".)\n", count := [ 3, 6, 1, 9 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "\\ n\ngap> FactorsMPQS( Factorial(38) + 1 );\n[ 14029308060317546154181, 37280713\ 718589679646221 ]\n\n", count := [ 3, 6, 1, 10 ], name := "PCDATA", root := ~ ) ], count := [ 3, 6, 1, 10 ], mathmode := "Text", name := "Example", next := 39206, root := ~, start := 39080, stop := 39205 ), rec( content := "\n ", count := [ 3, 6, 1, 11 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 6, 1, 5 ], mathmode := "Text", name := "Description", next := 39223, root := ~, start := 35404, stop := 39222 ) ], count := [ 3, 6, 1, 1 ], mathmode := "Text", name := "ManSection", next := 39237, root := ~, start := 35145, stop := 39236 ), rec( content := "\n\n", count := [ 3, 6, 1, 11 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( Only := "HTML" ) , content := [ rec( HTML := true, content := " ", count := [ 3, 6, 1, 11 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 6, 1, 11 ], name := "Alt", next := 39268, root := ~, start := 39239, stop := 39267 ), rec( content := "\n\n", count := [ 3, 6, 1, 11 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 6, 0, 1 ], mathmode := "Text", name := "Section", next := 39280, root := ~, start := 34939, stop := 39279 ), rec( content := "\n\n", count := [ 3, 6, 1, 11 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( content := " ###############################\ ##################################### ", count := [ 3, 6, 1, 11 ], mathmode := "Text", name := "XMLCOMMENT", root := ~ ), rec( content := "\n\n", count := [ 3, 6, 1, 11 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 3, 0, 0, 1 ], mathmode := "Text", name := "Chapter", next := 39371, root := ~, start := 18667, stop := 39370 ), rec( content := "\n\n", count := [ 3, 6, 1, 11 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( content := " #######################################\ ############################# ", count := [ 3, 6, 1, 11 ], mathmode := "Text", name := "XMLCOMMENT", root := ~ ), rec( content := "\n\n", count := [ 3, 6, 1, 11 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( content := " #######################################\ ############################# ", count := [ 3, 6, 1, 11 ], mathmode := "Text", name := "XMLCOMMENT", root := ~ ), rec( content := "\n", count := [ 3, 6, 1, 11 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( content := " ## \ ## ", count := [ 3, 6, 1, 11 ], mathmode := "Text", name := "XMLCOMMENT", root := ~ ), rec( content := "\n", count := [ 3, 6, 1, 11 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( content := " ## timings.xml FactInt document\ ation Stefan Kohl ## ", count := [ 3, 6, 1, 11 ], mathmode := "Text", name := "XMLCOMMENT", root := ~ ), rec( content := "\n", count := [ 3, 6, 1, 11 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( content := " ## \ ## ", count := [ 3, 6, 1, 11 ], mathmode := "Text", name := "XMLCOMMENT", root := ~ ), rec( content := "\n", count := [ 3, 6, 1, 11 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( content := " #######################################\ ############################# ", count := [ 3, 6, 1, 11 ], mathmode := "Text", name := "XMLCOMMENT", root := ~ ), rec( content := "\n\n", count := [ 3, 6, 1, 11 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( Label := "ch:Timings" ), content := [ rec( content := "\n", count := [ 4, 0, 0, 1 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "How much Time does a Fact\ orization take?", count := [ 4, 0, 0, 2 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 4, 0, 0, 2 ], mathmode := "Text", name := "Heading", next := 39931, root := ~, start := 39872, stop := 39930 ), rec( content := "\n\n", count := [ 4, 0, 0, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( content := " ###############################\ ##################################### ", count := [ 4, 0, 0, 3 ], mathmode := "Text", name := "XMLCOMMENT", root := ~ ), rec( content := "\n\n", count := [ 4, 0, 0, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( Label := "sec:TimingsForTheGeneralFactor\ izationRoutine" ), content := [ rec( content := "\n", count := [ 4, 1, 0, 1 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "Timings for the g\ eneral factorization routine", count := [ 4, 1, 0, 2 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 4, 1, 0, 2 ], mathmode := "Text", name := "Heading", next := 40139, root := ~, start := 40075, stop := 40138 ), rec( content := "\n\nA few words in advan\ ce: In general, it is not possible to give a precise\nprediction for the CPU t\ ime needed for factoring a given integer.\nThis time depends heavily on the si\ zes of the factors of the given number\nand on some other properties which can\ not be tested before actually\ndoing the factorization.\nBut nevertheless, rou\ gh runtime estimates can be given for numbers\nwith factors of given orders of\ magnitude. ", count := [ 4, 1, 0, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := 0, count := [ 4, 1, 0, 4 ], mathmode := "Text", name := "P", next := 40561, root := ~, start := 40557, stop := 40560 ), rec( content := "\n\nAfter casting out th\ e small and other ", count := [ 4, 1, 0, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "easy", count := [ 4, 1, 0, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 4, 1, 0, 4 ], mathmode := "Text", name := "Q", next := 40612, root := ~, start := 40601, stop := 40611 ), rec( content := " factors -- which should\ \nnot take more than at most a few minutes for numbers of\n", count := [ 4, 1, 0, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "reasonable", count := [ 4, 1, 0, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 4, 1, 0, 4 ], mathmode := "Text", name := "Q", next := 40710, root := ~, start := 40693, stop := 40709 ), rec( content := " size -- the general fac\ torization routine uses first ECM\n(see ", count := [ 4, 1, 0, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( Func := "FactorsECM", Label := "Elliptic Curves Method\ , ECM" ), content := 0, count := [ 4, 1, 0, 4 ], mathmode := "Text", name := "Ref", next := 40853, root := ~, start := 40778, stop := 40852 ), rec( content := ")\nfor finding factors v\ ery roughly up to\nthe third root of the remaining composite and then the MPQS\ \n(see ", count := [ 4, 1, 0, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( Func := "FactorsMPQS", Label := "Multiple Polynomial Qu\ adratic Sieve, MPQS" ), content := 0, count := [ 4, 1, 0, 4 ], mathmode := "Text", name := "Ref", next := 41054, root := ~, start := 40964, stop := 41053 ), rec( content := ")\nfor doing the ", count := [ 4, 1, 0, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "rest", count := [ 4, 1, 0, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 4, 1, 0, 4 ], mathmode := "Text", name := "Q", next := 41081, root := ~, start := 41070, stop := 41080 ), rec( content := " of the work.\nThe latte\ r is often the most time-consuming part. ", count := [ 4, 1, 0, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := 0, count := [ 4, 1, 0, 5 ], mathmode := "Text", name := "P", next := 41149, root := ~, start := 41145, stop := 41148 ), rec( content := "\n\nIn the sequel, some \ timings for the ECM and for the MPQS are given.\nThese methods are by far the \ most important ones with respect to\nruntime statistics (the ", count := [ 4, 1, 0, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "p \\pm 1", count := [ 4, 1, 0, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 4, 1, 0, 5 ], mathmode := "Text", name := "M", next := 41322, root := ~, start := 41308, stop := 41321 ), rec( content := "-methods\n(see ", count := [ 4, 1, 0, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( Func := "FactorsPminus1", Label := "Pollard's p-1" ), content := 0, count := [ 4, 1, 0, 5 ], mathmode := "Text", name := "Ref", next := 41391, root := ~, start := 41341, stop := 41390 ), rec( content := " and\n ", count := [ 4, 1, 0, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( Func := "FactorsPplus1", Label := "Williams' p+1" ), content := 0, count := [ 4, 1, 0, 5 ], mathmode := "Text", name := "Ref", next := 41456, root := ~, start := 41406, stop := 41455 ), rec( content := ")\nare only suitable for\ finding factors with certain properties and CFRAC\n(see ", count := [ 4, 1, 0, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( Func := "FactorsCFRAC", Label := "Continued Fraction Alg\ orithm, CFRAC" ), content := 0, count := [ 4, 1, 0, 5 ], mathmode := "Text", name := "Ref", next := 41625, root := ~, start := 41540, stop := 41624 ), rec( content := ")\nis just a slower pred\ ecessor of the MPQS).\nAll absolute timings are given for a Pentium 200 under\ Windows\nas a reference machine (this was a fast machine at the time the firs\ t\nversion of this package has been written).\n\n", count := [ 4, 1, 0, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 4, 1, 0, 1 ], mathmode := "Text", name := "Section", next := 41862, root := ~, start := 40012, stop := 41861 ), rec( content := "\n\n", count := [ 4, 1, 0, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( content := " ###############################\ ##################################### ", count := [ 4, 1, 0, 5 ], mathmode := "Text", name := "XMLCOMMENT", root := ~ ), rec( content := "\n\n", count := [ 4, 1, 0, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( Label := "sec:TimingsForTheECM" ), content := [ rec( content := "\n", count := [ 4, 2, 0, 1 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "Timings for the E\ CM", count := [ 4, 2, 0, 2 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 4, 2, 0, 2 ], mathmode := "Text", name := "Heading", next := 42020, root := ~, start := 41982, stop := 42019 ), rec( content := "\n\nThe runtime of ", count := [ 4, 2, 0, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "FactorsECM", count := [ 4, 2, 0, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 4, 2, 0, 3 ], mathmode := "Text", name := "C", next := 42054, root := ~, start := 42037, stop := 42053 ), rec( content := " depends mainly on the s\ ize of the factors\nof the input number.\nOn average, finding a 12-digit facto\ r of a 100-digit number\ntakes about 1 min 40 s, finding a 15-digit factor \ of\na 100-digit number takes about 10 min and finding an 18-digit factor\nof \ a 100-digit number takes about 50 min.\nA general rule of thumb is the follo\ wing: one digit more increases the\nruntime by a bit less than a factor of two\ .\nThese timings are very rough, and they may vary by a factor of 10 or more.\ \nYou can compare trying an elliptic curve with throwing a couple of dice,\nwh\ ere a success corresponds to the case where all of them show the same\nside --\ it is possible to be successful with the first trial, but it is\nalso possibl\ e that this takes much longer. In particular, all trials are\nindependent of o\ ne another.\nIn general, ECM is superior to Pollard's Rho for finding factors \ with at\nleast 10 decimal digits. In the same time needed by Pollard's Rho\nfo\ r finding a 13-digit factor one can reasonably expect to find a\n17-digit fact\ or when using ECM, for which Pollard's Rho in turn would\nneed about 100 time\ s as long as ECM.\nFor larger factors this difference grows rapidly.\nFrom th\ eory it can be said that finding a 20-digit factor requires\nabout 500 times a\ s much work as finding a 10-digit factor,\nfinding a 30-digit factor requires \ about 160 times as much work as\nfinding a 20-digit factor and finding a 40-di\ git factor requires\nabout 80 times as much work as finding a 30-digit factor.\ ", count := [ 4, 2, 0, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ) , rec( attributes := rec( ), content := 0, count := [ 4, 2, 0, 4 ], mathmode := "Text", name := "P", next := 43568, root := ~, start := 43564, stop := 43567 ), rec( content := "\n\nThe default paramete\ rs are optimized for finding factors with about\n15 -- 35 digits. This seems t\ o be a sensible choice, since this is the\nmost important range for the applic\ ation of ECM. The function\n", count := [ 4, 2, 0, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "FactorsECM", count := [ 4, 2, 0, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 4, 2, 0, 4 ], mathmode := "Text", name := "C", next := 43788, root := ~, start := 43771, stop := 43787 ), rec( content := " usually gives up when t\ he input number ", count := [ 4, 2, 0, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "n", count := [ 4, 2, 0, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 4, 2, 0, 4 ], mathmode := "Text", name := "M", next := 43841, root := ~, start := 43833, stop := 43840 ), rec( content := "\nhas two factors which \ are both larger than its third root.\nThis is of course only a ", count := [ 4, 2, 0, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "probabilistic", count := [ 4, 2, 0, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 4, 2, 0, 4 ], mathmode := "Text", name := "Q", next := 43946, root := ~, start := 43926, stop := 43945 ), rec( content := " statement. Sometimes --\ \nbut seldom -- the remaining composite has 3 factors, 4 factors\nshould occ\ ur (almost) never. ", count := [ 4, 2, 0, 4 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := 0, count := [ 4, 2, 0, 5 ], mathmode := "Text", name := "P", next := 44077, root := ~, start := 44073, stop := 44076 ), rec( content := "\n\nThe user can of cour\ se specify other parameters than the default ones,\nbut giving timings for all\ possible choices is obviously impossible.\nThe interested reader should follo\ w the references given in the\nbibliography at the end of this manual for gett\ ing information on how\nmany curves with which parameters are usually needed f\ or finding\nfactors of a given size. This depends mainly on the distribution o\ f\nprimes, respectively of numbers with prime factors not exceeding a\ncertain\ bound. ", count := [ 4, 2, 0, 5 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := 0, count := [ 4, 2, 0, 6 ], mathmode := "Text", name := "P", next := 44572, root := ~, start := 44568, stop := 44571 ), rec( content := "\n\nFor benchmarking pur\ poses, the amount of time needed for trying\na single curve with given smoothn\ ess bounds for a number of given size\nis suited best.\nA typical example is t\ he following: one curve with\n(", count := [ 4, 2, 0, 6 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "Limit1", count := [ 4, 2, 0, 6 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 4, 2, 0, 6 ], mathmode := "Text", name := "A", next := 44790, root := ~, start := 44777, stop := 44789 ), rec( content := ",", count := [ 4, 2, 0, 6 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "Limit2", count := [ 4, 2, 0, 6 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 4, 2, 0, 6 ], mathmode := "Text", name := "A", next := 44804, root := ~, start := 44791, stop := 44803 ), rec( content := ") = (100000,10000000) ap\ plied to a 100-digit\ninteger requires a total of 10 min 20 s, where\n6 mi\ n 45 s are spent for the first stage and\n3 min 35 s are spent for the se\ cond stage. The time needed\nfor the first stage is approximately linear in ", count := [ 4, 2, 0, 6 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "Limit1", count := [ 4, 2, 0, 6 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 4, 2, 0, 6 ], mathmode := "Text", name := "A", next := 45105, root := ~, start := 45092, stop := 45104 ), rec( content := " and the time\nneeded fo\ r the second stage is a bit less than linear in ", count := [ 4, 2, 0, 6 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "Limit2", count := [ 4, 2, 0, 6 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 4, 2, 0, 6 ], mathmode := "Text", name := "A", next := 45189, root := ~, start := 45176, stop := 45188 ), rec( content := ".\n\n", count := [ 4, 2, 0, 6 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 4, 2, 0, 1 ], mathmode := "Text", name := "Section", next := 45202, root := ~, start := 41943, stop := 45201 ), rec( content := "\n\n", count := [ 4, 2, 0, 6 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( content := " ###############################\ ##################################### ", count := [ 4, 2, 0, 6 ], mathmode := "Text", name := "XMLCOMMENT", root := ~ ), rec( content := "\n\n", count := [ 4, 2, 0, 6 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( Label := "sec:TimingsForTheMPQS" ), content := [ rec( content := "\n", count := [ 4, 3, 0, 1 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "Timings for the M\ PQS", count := [ 4, 3, 0, 2 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 4, 3, 0, 2 ], mathmode := "Text", name := "Heading", next := 45362, root := ~, start := 45323, stop := 45361 ), rec( content := "\n\nThe runtime of ", count := [ 4, 3, 0, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "FactorsMPQS", count := [ 4, 3, 0, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 4, 3, 0, 3 ], mathmode := "Text", name := "C", next := 45397, root := ~, start := 45379, stop := 45396 ), rec( content := " depends only on the siz\ e of the input\nnumber, and not on the size of its factors.\nRough timings are\ as follows: 90 s for a 40-digit number, 10 min\nfor a 50-digit number, 2 h\ for a 60-digit number, 20 h for\na 70-digit number and 100 h for a 75-digit\ number.\nThese timings are much more precise than those given for ECM, but th\ ey\nmay also vary by a factor of 2 or 3 depending on whether a good factor\nb\ ase can be found without using a large multiplier or not.\nA general rule of t\ humb is the following: 10 digits more cause\n10 times as much work. For benc\ hmarking purposes, precise timings\nfor some integers are given: ", count := [ 4, 3, 0, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "38!+1", count := [ 4, 3, 0, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 4, 3, 0, 3 ], mathmode := "Text", name := "M", next := 46066, root := ~, start := 46054, stop := 46065 ), rec( content := " (45 digits, good facto\ r base\nwith multiplier 1): 2 min 22 s, ", count := [ 4, 3, 0, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "40!-1", count := [ 4, 3, 0, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 4, 3, 0, 3 ], mathmode := "Text", name := "M", next := 46165, root := ~, start := 46153, stop := 46164 ), rec( content := "\n(48 digits, not so go\ od factor base even with multiplier 7):\n8 min 58 s, cofactor of ", count := [ 4, 3, 0, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( attributes := rec( ), content := [ rec( content := "1093^{33}+1", count := [ 4, 3, 0, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 4, 3, 0, 3 ], mathmode := "Text", name := "M", next := 46294, root := ~, start := 46276, stop := 46293 ), rec( content := " (61 digits,\ngood fact\ or base with multiplier 1): 1 h 12 min.\n\n", count := [ 4, 3, 0, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 4, 3, 0, 1 ], mathmode := "Text", name := "Section", next := 46392, root := ~, start := 45283, stop := 46391 ), rec( content := "\n\n", count := [ 4, 3, 0, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( content := " ###############################\ ##################################### ", count := [ 4, 3, 0, 3 ], mathmode := "Text", name := "XMLCOMMENT", root := ~ ), rec( content := "\n\n", count := [ 4, 3, 0, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 4, 0, 0, 1 ], mathmode := "Text", name := "Chapter", next := 46483, root := ~, start := 39843, stop := 46482 ), rec( content := "\n\n", count := [ 4, 3, 0, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ), rec( content := " #######################################\ ############################# ", count := [ 4, 3, 0, 3 ], mathmode := "Text", name := "XMLCOMMENT", root := ~ ), rec( content := "\n\n\n", count := [ 4, 3, 0, 3 ], mathmode := "Text", name := "PCDATA", root := ~ ) ], count := [ 0, 0, 4, 1 ], mathmode := "Text", name := "Body", next := 46572, root := ~, start := 3769, stop := 46571 ), rec( content := " ###############################################\ ##################### ", count := [ 4, 3, 0, 3 ], mathmode := "Text", name := "XMLCOMMENT", root := ~ ), rec( attributes := rec( Databases := "factintbib.xml" ), content := 0, count := [ "Bib", 0, 0, 1 ], mathmode := "Text", name := "Bibliography", next := 46695, root := ~, start := 46653, stop := 46694 ), rec( attributes := rec( ), content := 0, count := [ "Ind", 0, 0, 1 ], mathmode := "Text", name := "TheIndex", next := 46708, root := ~, start := 46697, stop := 46707 ), rec( content := " ###############################################\ ##################### ", count := [ "Ind", 0, 0, 1 ], mathmode := "Text", name := "XMLCOMMENT", root := ~ ) ], count := [ 0, 0, 0, 1 ], name := "Book", next := 46796, root := ~, start := 677, stop := 46795 ), rec( content := " #######################################################\ ############# ", count := [ "Ind", 0, 0, 1 ], name := "XMLCOMMENT", root := ~ ) ], count := [ 0, 0, 0, 1 ], indent := "", indextext := "CFRAC, shorthand for FactorsCFRAC \ 3.5-1
\nContinued Fracti\ on Algorithm (CFRAC) 3.5
\ncontinued fraction approximation 3.5-1
\nECM, shorthand for FactorsECM \ 3.4-1
\nelliptic curve g\ roups 3.4-1
\nelliptic c\ urve point 3.4-1
\nEllip\ tic Curves Method (ECM) 3.4\nFactInt, factorization of an integer 2.1-2
\nFa\ ctIntInfo, setting the InfoLevel of InfoFactInt 2.2-1
\nfactor base 3.5-1
\nfactor base, large factors 3.5-1
\nFactors, FactInt's method, for integers 2.1-1
\nFactorsCFRAC, Continued Fracti\ on Algorithm, CFRAC 3.5-1
\nFactorsECM, Elliptic Curves Method, ECM 3.4-1
\nF\ actorsMPQS, Multiple Polynomial Quadratic Sieve, MPQS 3.6-1
\nFactorsPminu\ s1, Pollard's p-1 3.2-1
\nFactorsPplus1, Williams' p+1
3.3-1
\nFactors\ TD, trial division 3.1-1
\nfirst stage limit
3.4-1\
\nGaussian Elimination \ 3.5-1
\nGeneralized Number Field Sieve 1.
\nInfoFactInt, FactInt'\ s Info class 2.2-1
\ninf\ ormation about factoring process \ 2.2
\nLagrange's Theorem 3.2-1
\nMPQS, shorthand for FactorsMPQS \ 3.6-1
\nMultiple Polynom\ ial Quadratic Sieve (MPQS) 3.6
\nPollard's \\(p-1\\)
3.2
\nPollard's Rho 1.
\nprimality of the factors 2.1-1
\nprime ideal 1.
\nprojective coordinates 3.4-1
\nRSA Factoring Challenge 1.
\nsecond stage limit 3.4-1
\nsieving interval 3.6-1
\ntrial division 3.1
\nWeierstrass model 3.4-1
\nWilliams' \\(p+1\\) \ 3.3
\n", input := "\n\nGAP\"\ >\n FactInt\">\n ]>\n\n\n\n\n\n\n\n\n\n \n\n\n\n\n &FactInt\ ;\n Advanced Methods for Factoring Integers\n <\ Version>\n Version 1.5.3\n \n \n Stefan Kohl\n stefan@mcs.st-and.ac.uk\n \n http://www.gap-sys\ tem.org/DevelopersPages/StefanKohl/\n \n
\n Dep\ artment of Mathematics
\n University of Vlora
\n Lagjja: P\ avaresia
\n Vlore / Albania\n
\n
\n Ju\ ne 16, 2011\n \n ©right; 1999 - 2011 by Stefan Kohl.\

\n\n &FactInt; is free software: you can redistribute it and/or modify\ \n it under the terms of the GNU General Public License as published by\n \ the Free Software Foundation, either version 2 of the License, or\n (at y\ our option) any later version.

\n\n &FactInt; is distributed in the hop\ e that it will be useful,\n but WITHOUT ANY WARRANTY; without even the impl\ ied warranty of\n MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See\ the\n GNU General Public License for more details.

\n\n For a copy \ of the GNU General Public License, see \n the file GPL in the etc\ directory of the &GAP;\n distribution or see http://www.gnu.org/l\ icenses/gpl.html.\n \n \n\n\n\n\n\n\n\nThis package f\ or &GAP; 4 provides a general-purpose integer\nfactorization routine, whi\ ch makes use of a combination of factoring\nmethods. In particular it contains\ implementations of the following\nalgorithms:\n\n\n Pollard's p-1\n Williams' p+1\n Elliptic Curves \ Method (ECM)\n Continued Fraction Algorithm (CFRAC)\n Multiple Polynomial Quadratic Sieve (MPQS)\n\n\nIt also cont\ ains code by Frank L�beck for making use of Richard P.\nBrent's tables of fact\ ors of integers of the form b^k \\pm 1.\n\n&FactInt; is completely writ\ ten in the &GAP; language and contains /\nrequires no external binaries. It ne\ eds GAPDoc 1.0\n or higher. &Fac\ tInt; must be installed in the\npkg subdirectory of the &GAP; dis\ tribution.\n\n\n\n\n\n \n I would like to than\ k Bettina Eick and Steve Linton for their support\n and many interesting di\ scussions.\n \n\n\n\n\n\n\n\n\ \n\n\n\n\n\n\n\n\nPreface\n\ \n\n\n\n\n\n\ \n\n\n\n\n\nThe General Factorization Ro\ utine\n\n\n\n

\nThe method for\ Factors\n\nThe &FactInt; package provides a better method fo\ r the operation\nFactors for integer arguments, which supersedes the on\ e included in\nthe &GAP; Library:\n\n\n \n \n A sorted \ list of the prime factors of n.\n \n \n primality of the factors\n The\ returned factors pass the built-in probabilistic primality test of\n &GAP;\ (IsProbablyPrimeInt, Baillie-PSW Primality Test; see the\n &GAP; Re\ ference Manual).\n If the method fails to compute the prime factorization o\ f n,\n an error is signalled.\n The same holds for all other fact\ orization routines provided by this\n package.\n It follows a rough desc\ ription how the factorization method works:

\n\n First of all, the meth\ od checks whether n = b^k \\pm 1 for some\n b, k and l\ ooks for factors corresponding to polynomial\n factors of x^k \\pm 1\ .\n Provided that b and k are not too large, the factors that\ \n do not correspond to polynomial factors are taken from Richard P. Brent'\ s\n Factor Tables .\n The code for accessing\ these tables has been contributed by Frank L�beck.\n

\n\n Then the \ method uses trial division and a number of cheap methods for\n various comm\ on special cases.\n After the small and other easy factors have been\ found this way,\n &FactInt;'s method searches for medium-sized fact\ ors using\n Pollard's Rho (by the library function FactorsRho, see t\ he &GAP;\n Reference Manual), Pollard's p-1\n (see ),\n Williams' p+\ 1\n (see )\n \ and the Elliptic Curves Method (ECM, \n see )\n in this order.

\n\n If\ there is still an unfactored part remaining after that,\n it is factored u\ sing the Multiple Polynomial Quadratic Sieve (MPQS,\n see ).\n

\n\n The following options are interpreted:\n\n \n TDHints\n \n A list of additio\ nal trial divisors.\n This is useful only if certain primes p are expected to\n divide n with probability significantly lar\ ger than\n \\frac{1}{p}.\n \n RhoSteps\ \n \n The number of steps for Pollard's Rho.\n \ \n RhoCluster\n \n The nu\ mber of steps between two gcd computations in Pollard's Rho.\n \n \ Pminus1Limit1 / Pminus1Limit2\n \n \ The first- / second stage limit for Pollard's p-1\n \ (see ).\n \n Pplus1Residues\n \n The numbe\ r of residues to be tried by Williams' p+1\n (see ).\n \n Pplus1Limit1 / Pplus1Limit2\n \n The \ first- / second stage limit for Williams' p+1\n (see <\ Ref Func=\"FactorsPplus1\" Label=\"Williams' p+1\"/>).\n \n <\ Mark>ECMCurves\n \n The number of elliptic cur\ ves to be tried by the\n Elliptic Curves Method (ECM)\n (see&nbs\ p;).\n Also admissible: a function that takes the number n\ to be\n factored as an argument and returns the desired number\n \ of curves to be tried.\n \n ECMLimit1 / ECMLimit2\n \n The initial first- / second stage\ limit for ECM\n (see ).\n \n \ ECMDelta\n \n The increment per curve for the fir\ st\n stage limit in ECM. The second stage limit is adjusted appropriate\ ly\n (see ).\n \n ECMDetermin\ istic\n \n If true, ECM chooses its curves determ\ inistically, i.e. repeatable\n (see ).\n \n \ FBMethod\n \n Specifies which of th\ e factor base methods should be\n used to do the hard work. Curr\ ently implemented:\n \"CFRAC\" and \"MPQS\"\n (see\  \n and ,\n \ respectively).\n Default: \"MPQS\".\n \n \ \n\n For the use of the &GAP; Options Stack, see Chapter Options Stack\n in the &GAP; Reference Manual.

\n\n Setting RhoSteps, Pminus1Limit1, Pplus1Residues,\n Pplus1Limit1, ECMCur\ ves or ECMLimit1 equal to zero\n switches the respective method \ off. The method chooses defaults for all\n option values that are not expli\ citly set by the user. The option values\n are also interpreted by the rout\ ines for the particular factorization\n methods described in the next chapt\ er.\n\n Factors( Factorial(44) + 1 );\n[ 694763, 92452\ 26412016162109253, 413852053257739876455072359 ]\ngap> Factors( 2^997 - 1 );\n\ [ 167560816514084819488737767976263150405095191554732902607, \n 7993430605360\ 2222928609369601238840619880168466272137576868879760059\\\n3002563860297371289\ 151859287894468775962208410650878341385577817736702\\\n21588789207414137008681\ 82301410439178049533828082651513160945607018874\\\n830040978453228378816647358\ 334681553 ]\n]]>\n\n \n\n\nThe above met\ hod for Factors calls the following function,\nwhich is the actual w\ orking horse of this package:\n\n\n \n \n A list of tw\ o lists, where the first list contains the determined\n prime factors of&nb\ sp;n and the second list contains the\n remaining unfactored parts o\ f n, if there are any.\n \n \n This fu\ nction interprets all options which are interpreted by the\n method for \ Factors described above. In addition, it interprets\n the options ch\ eap and FactIntPartial.\n If the option cheap is set, onl\ y usually\n cheap factorization attempts are made.\n If the option Fa\ ctIntPartial is set, the factorization process\n is stopped before invo\ king the (usually time-consuming) MPQS or CFRAC,\n if the number of digits \ of the remaining unfactored part exceeds the\n bound passed as option value\ MPQSLimit or CFRACLimit,\n respectively.

\n\n Fact\ ors(n) is equivalent to\n FactInt(n:cheap:=fals\ e,\n FactIntPartial:=false)[1].\n\n\ FactInt( Factorial(300) + 1 : cheap );\n[ [ 461, 259856122109,\ 995121825812791, 3909669044842609, \n 4220826953750952739, 1484104383989\ 6940772689086214475144339 ], \n [ 1048312882317657231739838365604385940533362\ 96629073932563520618687\\\n928764505801068882724606154106563111934567408183408\ 5960064144597037243\\\n9235869682208979384309498719255615067943353399357029226\ 058930732298505\\\n58169774953984267416566334617470466236414510426552470933155\ 05417820370\\\n945174587170174200054638461447275658418247853188096259485727586\ 9690727\\\n9733563594352516014206081210368516157890709802912711149521530885498\ 556\\\n1244667790208245620301404499928532222524585946881528337257061789593197\ \\\n99211283640357942345263781351 ] ]\n]]>\n\n \n\n\n

\n\n\n\n
\nGetting i\ nformation about the factoring process\n\n\n information about factoring process\n\n\n\ Optionally, the &FactInt; package prints information on the progress of\nthe f\ actorization process:\n\n\n \n \n \ \n This Info class allows to monitor what happens during the \ factoring\n process.

\n\n If InfoLevel(InfoFactInt) = 1, then\ basic information\n about the factoring techniques used is displayed. If t\ his InfoLevel has\n value 2, then additionally all relevant ste\ ps in the\n factoring algorithms are mentioned. If it is set equal to \ 3, then\n large amounts of details of the progress of the factoring process\ are\n shown.

\n\n Enter FactIntInfo(level) to set the\ \n InfoLevel of InfoFactInt to the positive\n integer l\ evel. The call FactIntInfo(level);\n is equivalent to \ SetInfoLevel(InfoFactInt,level);.

\n\n The informational out\ put is usually not literally the same in\n each factorization attempt to a \ given integer with given parameters.\n For a description of the Info mechan\ ism, see Section\n Info Functions in the &GAP; Reference Manual. \n \ \n\n\n

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nThe Routines for Specific Factorization \ Methods\n\nDescriptions of the factoring methods implemented in this\ package can\nbe found in  and .\nCohen's book contains also descriptions of the other methods mention\ ed\nin the preface.\n\n\n\n
\nTria\ l division\n\ntrial division\n\ \n\n \n \n A list of two lists: The first list contains\ the prime factors found,\n and the second list contains remaining unfactor\ ed parts of n,\n if there are any.\n \n \n \ This function tries to factor n by trial division.\n The optional\ argument Divisors is the list of trial divisors.\n If not given, it\ defaults to the list of primes p < 1000.\n\n FactorsTD(12^25+25^12);\n[ [ 13, 19, 727 ], [ 5312510324723614735153 ] ]\n]]\ >\n\n \n\n\n
\n\n\n\n
\nPollard's p-1\n\nPollard's p-1\n\n\n \n \n A list of two lists: The first list co\ ntains the prime factors found,\n and the second list contains remaining un\ factored parts of n,\n if there are any.\n \n \n This function tries to factor n using Pollard's p-1.\n It uses a as base for exponentiation, Limit1 as first\n \ stage limit and Limit2 as second stage limit.\n If the function i\ s called with three arguments, these arguments are\n interpreted as n, Limit1 and Limit2. Defaults are\n chosen for all arguments\ which are omitted.

\n\n Pollard's p-1 is based on the fact that\ exponentiation\n (mod n) can be done efficiently enough to com\ pute\n a^{k!} mod n for sufficiently large k\ \n in a reasonable amount of time. Assume that p is a prime factor\n\ of n which does not divide a, and that k!\n i\ s a multiple of p-1. Then\n L\ agrange's Theorem\n Lagrange's Theorem states that a^{k!} \\equi\ v 1\n (mod p). If k! is not a multiple of q-1\ for\n another prime factor q of n, it is likely that th\ e\n factor p can be determined by computing\n \\gcd(a^{k!\ }-1,n). A prime factor p is usually found if\n the largest prime\ factor of p-1 is not larger than Limit2,\n and the second-la\ rgest one is not larger than Limit1.\n (Compare with \n and .)\n\n FactorsP\ minus1( Factorial(158) + 1, 100000, 1000000 );\n[ [ 2879, 5227, 1452486383317,\ 9561906969931, 18331561438319, \n 48371429970948376081158111034173295050\ 64932181226548534006749213\\\n450823109063704522956548165713050412173230528798\ 4292482612133314325471\\\n3674832962773107806789945715570386038565256719614524\ 924705165110048148\\\n7161609649806290811760570095669 ], [ ] ]\ngap> List( la\ st[ 1 ]{[ 3, 4, 5 ]}, p -> Factors( p - 1 ) );\n[ [ 2, 2, 3, 3, 81937, 492413 \ ], [ 2, 3, 3, 3, 5, 7, 7, 1481, 488011 ]\n , [ 2, 3001, 7643, 399613 ] ]\n]\ ]>\n\n \n\n\n

\n\n\n\n
\nWilliams' p+1\n\nWilliams' p+1\n\n\n \n \n A list of two lists: The first l\ ist contains the prime factors found,\n and the second list contains remain\ ing unfactored parts of n,\n if there are any.\n \n \n This function tries to factor n using Williams' \ p+1.\n It tries Residues different residues, and uses Limit1<\ /A>\n as first stage limit and Limit2 as second stage limit.\n If\ the function is called with three arguments, these arguments are\n interpr\ eted as n, Limit1 and Limit2. Defaults are\n chosen fo\ r all arguments which are omitted.

\n\n Williams' p+1 is very si\ milar to Pollard's p-1\n (see ).\n The difference is that the underlying group here \ can either have order\n p+1 or p-1, and that the group operat\ ion takes more time.\n A prime factor p is usually found if the larg\ est prime factor\n of the group order is at most Limit2 and the seco\ nd-largest one\n is not larger than Limit1.\n (Compare also with \ .)\n\n FactorsPplus1( Factorial(55) - 1\ , 10, 10000, 100000 );\n[ [ 73, 39619, 277914269, 148257413069 ], \n [ 106543\ 529120049954955085076634537262459718863957 ] ]\ngap> List( last[ 1 ], p -> [ F\ actors( p - 1 ), Factors( p + 1 ) ] );\n[ [ [ 2, 2, 2, 3, 3 ], [ 2, 37 ] ], \n\ [ [ 2, 3, 3, 31, 71 ], [ 2, 2, 5, 7, 283 ] ], \n [ [ 2, 2, 2207, 31481 ], [\ 2, 3, 5, 9263809 ] ], \n [ [ 2, 2, 47, 788603261 ], [ 2, 3, 5, 13, 37, 67, 8\ 9, 1723 ] ] ]\n]]>\n\n \n\n\n

\ \n\n\n\n
\nThe Elliptic Curves Method (ECM)<\ /Heading>\n\n\n Elliptic Curves M\ ethod (ECM)\n\n\n\n \n \n \n A list of two lists: The first list contains the prime \ factors found,\n and the second list contains remaining unfactored parts of\ n,\n if there are any.\n \n \n This fun\ ction tries to factor n using the Elliptic Curves\n Method (ECM).\n \ The argument Curves is the number of curves to be tried.\n The ar\ gument Limit1 is the initial\n firs\ t stage limit\n first stage limit, and Limit2 is the initial\ \n second stage limit\n second\ stage limit.\n The argument Delta is the increment per curve for th\ e first stage\n limit. The second stage limit is adjusted appropriately. De\ faults are\n chosen for all arguments which are omitted.

\n\n Fac\ torsECM recognizes the option ECMDeterministic.\n If set, the ch\ oice of the curves is deterministic.\n This means that in repeated runs of \ FactorsECM the same\n curves are used, and hence for the same <\ M>n the same\n factors are found after the same number of trials.

\ \n\n The Elliptic Curves Method is based on the fact that exponentiation\n \ in the\n elliptic curve groups\n elliptic curve groups E(a,b)/n can be performed fast enough\n \ to compute for example g^{k!} for k large enough\n (e.g. 1\ 00000 or so) in a reasonable amount of time and without\n using much memory\ , and on Lagrange's Theorem.\n Assume that p is a prime divisor of&n\ bsp;n.\n Then Lagrange's Theorem states that if k! is a multi\ ple of\n |E(a,b)/p|, then for any\n elliptic curve point\n elliptic curve point g, t\ he power g^{k!} is the\n identity element of E(a,b)/p.\n I\ n this situation -- under reasonable circumstances --\n the factor \ p can be determined by taking an appropriate gcd.\n

\n\n In prac\ tice, the algorithm chooses in some sense better\n products P_k of small primes rather than k! as exponents.\n After reaching the\ first stage limit with P_{Limit1}, it\n considers further products \ P_{Limit1}q for primes q\n up to the second stage limit \ Limit2, which is usually set equal\n to something like 100 times the\ first stage limit.\n The prime q corresponds to the largest pr\ ime factor of the\n order of the group E(a,b)/p.

\n\n A prime\ divisor p is usually found if the largest prime factor\n of the ord\ er of one of the examined elliptic curve groups E(a,b)/p\n is at mos\ t Limit2 and the second-largest one is at most\n Limit1. Thus\ trying a larger number of curves increases the chance\n of factoring n<\ /A> as well as choosing a larger value\n for Limit1 and/or Limit2\ . It turns out to be not optimal\n either to try a large number of curv\ es with very small Limit1\n and Limit2 or to try only a few c\ urves with very large limits.\n (Compare with .)\n

\n\n \ The elements of the group E(a,b)/n are the points (x,y)\n gi\ ven by the solutions of y^2 = x^3 + ax + by in the residue\n class r\ ing (mod n), and an additional point \\infty\n at infini\ ty, which serves as identity element.\n To turn this set into a group, defi\ ne the product (although elliptic\n curve groups are usually written additi\ vely, I prefer using the\n multiplicative notation here to retain the analo\ gy\n to and\n )\n of two points p_1<\ /M> and p_2 as follows:\n If p_1 \\neq p_2, let l\ be the line through p_1\n and p_2, otherwise let l be the tangent to the\n curve C given by the above equation \ in the point\n p_1 = p_2. The line l intersects C in a\ third\n point, say p_3. If l does not intersect the cur\ ve in\n a third affine point, then set p_3 := \\infty.\n Define <\ M>p_1 \\cdot p_2 by the image of p_3 under\n the reflection\ across the x-axis.\n Define the product of any curve point p\ and \\infty by\n p itself. This -- more or less obviously, c\ hecking associativity\n requires some calculation -- turns the set of point\ s on the given curve\n into an abelian group E(a,b)/n.

\n\n H\ owever, the calculations are done in\n projective coordinates\n projective coordinates to have an expli\ cit representation of the\n identity element and to avoid calculating inver\ ses (mod n)\n for the group operation. Otherwise this would req\ uire using an\n O((log \\ n)^3)-algorithm, while multiplication (mod\  n)\n is only O((log \\ n)^2). The corresponding equatio\ n is given by\n bY^2Z = X^3 + aX^2Z + XZ^2. This form allows even mo\ re efficient\n computations than the\n \ Weierstrass model\n Weierstrass model Y^2Z = X^3 + aXZ^2 + bZ^3<\ /M>, which is the\n projective equivalent of the affine representation\n \ y^2 = x^3 + ax + by mentioned above. The algorithm only keeps\n tra\ ck of two of the three coordinates, namely X and Z.\n Th\ e curves are chosen in a way that ensures the order of the\n corresponding \ group to be divisible by 12. This increases the chance\n that it is sm\ ooth enough to find a factor of n.\n The implementation follows\ the description of R. P. Brent given in\n , pp. 5 -\ - 8. In terms of this paper,\n for the second stage the improved standar\ d continuation is used.\n\n FactorsECM(2^256+1,100\ ,10000,1000000,100);\n[ [ 1238926361552897, \n 93461639715357977769163558\ 199606896584051237541638188580280321 ]\n , [ ] ]\n]]>\n\n \n\n\n

\n\n\n\n
\nThe Continued Fraction Algorithm (CFRAC)\n\n\n Continued Fraction Algorithm (CFRAC)\n<\ /Index>\n\n\n \n \n \n A list of\ the prime factors of n.\n \n \n This \ function tries to factor n using the Continued Fraction\n Algorithm \ (CFRAC), also known as Brillhart-Morrison Algorithm.\n In case of failure a\ n error is signalled.

\n\n Caution: The runtime of this function depend\ s only on the size\n of n, and not on the size of the factors.\ \n Thus if a small factor is not found during the preprocessing\n which \ is done before invoking the sieving process, the runtime is\n as long as if\ n would have two prime factors of roughly\n equal size.

\n\n \ The Continued Fraction Algorithm tries to find integers x\n and&nbs\ p;y such that x^2 \\equiv y^2 (mod n),\n but not \ \\pm x \\equiv \\pm y (mod n).\n In this situation, taki\ ng \\gcd(x - y,n) yields a nontrivial\n divisor of n. Fo\ r determining such a pair (x,y),\n the algorithm uses the continued \ fraction expansion of the square root\n of n. If x_i/y_i\ is a\n \n continued f\ raction approximation\n \n continued fraction approximation of t\ he square root of n,\n then c_i := x_i^2 - ny_i^2 is bou\ nded by a small constant times\n the square root of n.\n The\ algorithm tries to find as many c_i as possible which factor\n comp\ letely over a chosen\n factor base\n \ factor base (a list of small primes) or with only one factor not in the\n f\ actor base. The latter ones can be used if and only if a second\n c_i with the same large factor is found.\n factor base\n Once enough values c_i have been factored, as a final stage\n Gaussian Elimination\n Gaussian Elimination over GF(2) is used t\ o determine which of the\n congruences x_i^2 \\equiv c_i (mod <\ M>n) have to be\n multiplied together to obtain a congruence of the des\ ired form\n x^2 \\equiv y^2 (mod n).\n Let M b\ e the corresponding matrix. Then the entries\n of M are given b\ y M_{ij} = 1 if an odd power of\n the j-th element of the fac\ tor base divides the i-th\n usable factored value, and M_{ij} = 0\ otherwise.\n To obtain the desired congruence, it is necessary that th\ e rows\n of M are linearly dependent.\n In other words, this\ means that the number of factored c_i\n needs to be larger than the\ rank of M, which is\n approximately given by the size of the f\ actor base. (Compare\n with .)\n\n FactorsCFRAC( Factorial(34) - 1 );\n[ 10398560889846739639, 28391697\ 867333973241 ]\n]]>\n\n \n\n\n

\ \n\n\n\n
\nThe Multiple Polynomial Quadrati\ c Sieve (MPQS)\n\n\n Multiple Polynomial Quadratic Sieve (MPQS)\n\n\n\n \n \n \n A list of the prime factors \ of n.\n \n \n This function tries to f\ actor n using the Single Large Prime\n Variation of the Multiple Pol\ ynomial Quadratic Sieve (MPQS).\n In case of failure an error is signalled.\

\n\n Caution: The runtime of this function depends only on the size\n \ of n, and not on the size of the factors.\n Thus if a small \ factor is not found during the preprocessing\n which is done before invokin\ g the sieving process, the runtime is\n as long as if n would have t\ wo prime factors of roughly\n equal size.

\n\n The intermediate resu\ lts of a computation can be saved by\n interrupting it with [Ctrl][C] and calling Pause();\n from the break loop. This causes all data n\ eeded for resuming\n the computation again to be pushed as a record MPQS\ Tmp\n on the options stack.\n When called again with the same argume\ nt n, FactorsMPQS\n takes the record from the options stack a\ nd continues with the previously\n computed factorization data. For continu\ ing the factorization process\n in another session, one needs to write this\ record to a file.\n This can be done by the function SaveMPQSTmp(fil\ ename).\n The file written by this function can be read by the stan\ dard\n Read-function of &GAP;.

\n\n The Multiple Polynom\ ial Quadratic Sieve tries to find integers x\n and y suc\ h that x^2 \\equiv y^2 (mod n),\n but not \\pm x \\eq\ uiv \\pm y (mod n).\n In this situation, taking \\gcd(x \ - y,n) yields a nontrivial\n divisor of n. For determining \ such a pair (x,y),\n the algorithm chooses polynomials f_a of\ the form\n f_a(r) = ar^2 + 2br + c with suitably chosen coefficient\ s\n a, b and c which satisfy b^2 \\equiv n\ \n (mod a) and c = (b^2 - n)/a.\n The identity a \ \\cdot f_a(r) = (ar + b)^2 - n yields\n a congruence (mod n\ ) with a perfect square on one side\n and a \\cdot f_a(r) on the oth\ er. The algorithm uses a sieving\n technique similar to the Sieve of Eratos\ thenes over an appropriately\n chosen\n \ sieving interval\n sieving interval to search for factorizations of\ values f_a(r)\n over a chosen factor base. Any two factorizations w\ ith the same single\n large factor which does not belong to the fact\ or base can also be\n used. Taking more polynomials and hence shorter sievi\ ng intervals has\n the advantage of having to factor smaller values f_a(\ r) over the\n factor base.

\n\n Once enough values f_a(r)\ have been factored, as a final stage\n Gaussian Elimination over GF(2) is \ used to determine which congruences\n have to be multiplied together to obt\ ain a congruence of the desired\n form x^2 \\equiv y^2 (mod \ n). Let M be the\n corresponding matrix. Then the entries of&nbs\ p;M are given by\n M_{ij} = 1 if an odd power of the j\ -th element of the\n factor base divides the i-th usable factored va\ lue, and\n M_{ij} = 0 otherwise.\n To obtain the desired congruen\ ce, it is necessary that the rows\n of M are linearly dependent\ .\n In other words, this means that the number of usable factorizations of\ \n values f_a(r) needs to be larger than the rank of M.\ \n The latter is approximately equal to the size of the factor base.\n (\ Compare with .)\n\n Fact\ orsMPQS( Factorial(38) + 1 );\n[ 14029308060317546154181, 37280713718589679646\ 221 ]\n]]>\n\n \n\n\n\  \n\n

\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nHow much Time does a Factorization take?\n\n\n\n<\ Section Label=\"sec:TimingsForTheGeneralFactorizationRoutine\">\nTimi\ ngs for the general factorization routine\n\nA few words in advance:\ In general, it is not possible to give a precise\nprediction for the CPU time\ needed for factoring a given integer.\nThis time depends heavily on the sizes\ of the factors of the given number\nand on some other properties which cannot\ be tested before actually\ndoing the factorization.\nBut nevertheless, rough \ runtime estimates can be given for numbers\nwith factors of given orders of ma\ gnitude.

\n\nAfter casting out the small and other easy factors -- \ which should\nnot take more than at most a few minutes for numbers of\nreas\ onable size -- the general factorization routine uses first ECM\n(see \ ;)\nfor finding factors very roughly up to\nthe third root of the remaining\ composite and then the MPQS\n(see )\nfor doing the r\ est of the work.\nThe latter is often the most time-consuming part.

\n\ \nIn the sequel, some timings for the ECM and for the MPQS are given.\nThese m\ ethods are by far the most important ones with respect to\nruntime statistics \ (the p \\pm 1-methods\n(see  and\n )\nare only suitable for finding factors with certain properties and C\ FRAC\n(see )\nis just a slower predecessor of the MPQS).\nAll\ absolute timings are given for a Pentium 200 under Windows\nas a referen\ ce machine (this was a fast machine at the time the first\nversion of this pac\ kage has been written).\n\n\n\n\n\n

\nTimings for the ECM\n\nThe runtime of FactorsECM\ depends mainly on the size of the factors\nof the input number.\nOn avera\ ge, finding a 12-digit factor of a 100-digit number\ntakes about 1 min&nb\ sp;40 s, finding a 15-digit factor of\na 100-digit number takes about 10&\ nbsp;min and finding an 18-digit factor\nof a 100-digit number takes about 50&\ nbsp;min.\nA general rule of thumb is the following: one digit more incre\ ases the\nruntime by a bit less than a factor of two.\nThese timings are very \ rough, and they may vary by a factor of 10 or more.\nYou can compare trying an\ elliptic curve with throwing a couple of dice,\nwhere a success corresponds t\ o the case where all of them show the same\nside -- it is possible to be succe\ ssful with the first trial, but it is\nalso possible that this takes much long\ er. In particular, all trials are\nindependent of one another.\nIn general, EC\ M is superior to Pollard's Rho for finding factors with at\nleast 10 decimal d\ igits. In the same time needed by Pollard's Rho\nfor finding a 13-digit factor\ one can reasonably expect to find a\n17-digit factor when using ECM, for whic\ h Pollard's Rho in turn would\nneed about 100 times as long as ECM.\nFor\ larger factors this difference grows rapidly.\nFrom theory it can be said tha\ t finding a 20-digit factor requires\nabout 500 times as much work as finding \ a 10-digit factor,\nfinding a 30-digit factor requires about 160 times as much\ work as\nfinding a 20-digit factor and finding a 40-digit factor requires\nab\ out 80 times as much work as finding a 30-digit factor.

\n\nThe default pa\ rameters are optimized for finding factors with about\n15 -- 35 digits. This s\ eems to be a sensible choice, since this is the\nmost important range for the \ application of ECM. The function\nFactorsECM usually gives up when the \ input number n\nhas two factors which are both larger than its thi\ rd root.\nThis is of course only a probabilistic statement. Sometimes -\ -\nbut seldom -- the remaining composite has 3 factors, 4 factors\ns\ hould occur (almost) never.

\n\nThe user can of course specify other param\ eters than the default ones,\nbut giving timings for all possible choices is o\ bviously impossible.\nThe interested reader should follow the references given\ in the\nbibliography at the end of this manual for getting information on how\ \nmany curves with which parameters are usually needed for finding\nfactors of\ a given size. This depends mainly on the distribution of\nprimes, respectivel\ y of numbers with prime factors not exceeding a\ncertain bound.

\n\nFor be\ nchmarking purposes, the amount of time needed for trying\na single curve with\ given smoothness bounds for a number of given size\nis suited best.\nA typica\ l example is the following: one curve with\n(Limit1,Limit2) = (1\ 00000,10000000) applied to a 100-digit\ninteger requires a total of 10 mi\ n 20 s, where\n6 min 45 s are spent for the first sta\ ge and\n3 min 35 s are spent for the second stage. The time nee\ ded\nfor the first stage is approximately linear in Limit1 and the time\ \nneeded for the second stage is a bit less than linear in Limit2.\n\n<\ /Section>\n\n\n\n

\nTimings fo\ r the MPQS\n\nThe runtime of FactorsMPQS depends only on the \ size of the input\nnumber, and not on the size of its factors.\nRough timings \ are as follows: 90 s for a 40-digit number, 10 min\nfor a 50-digit n\ umber, 2 h for a 60-digit number, 20 h for\na 70-digit number and 10\ 0 h for a 75-digit number.\nThese timings are much more precise than thos\ e given for ECM, but they\nmay also vary by a factor of 2 or 3 depending \ on whether a good factor\nbase can be found without using a large multiplier o\ r not.\nA general rule of thumb is the following: 10 digits more cause\n1\ 0 times as much work. For benchmarking purposes, precise timings\nfor som\ e integers are given: 38!+1 (45 digits, good factor base\nwith mul\ tiplier 1): 2 min 22 s, 40!-1\n(48 digits, not\ so good factor base even with multiplier 7):\n8 min 58 s,\ cofactor of 1093^{33}+1 (61 digits,\ngood factor base with multip\ lier 1): 1 h 12 min.\n\n
\n\n\n\n\n\n\n\n\ \n\n\n\n\n\n\n\n\ \n\n", inputorigins := [ [ 1, "doc/factint.xml", 1 ], [ 45, "doc/factint.xml", 2 ], [ 46, "doc/factint.xml", 3 ], [ 94, "doc/factint.xml", 4 ], [ 136, "doc/factint.xml", 5 ], [ 186, "doc/factint.xml", 6 ], [ 190, "doc/factint.xml", 7 ], [ 238, "doc/factint.xml", 8 ], [ 285, "doc/factint.xml", 9 ], [ 286, "doc/factint.xml", 10 ], [ 364, "doc/factint.xml", 11 ], [ 442, "doc/factint.xml", 12 ], [ 520, "doc/factint.xml", 13 ], [ 598, "doc/factint.xml", 14 ], [ 676, "doc/factint.xml", 15 ], [ 677, "doc/factint.xml", 16 ], [ 700, "doc/factint.xml", 17 ], [ 701, "doc/factint.xml", 18 ], [ 779, "doc/factint.xml", 19 ], [ 780, "doc/factint.xml", 20 ], [ 792, "doc/factint.xml", 21 ], [ 819, "doc/factint.xml", 22 ], [ 882, "doc/factint.xml", 23 ], [ 894, "doc/factint.xml", 24 ], [ 906, "doc/../version", 1 ], [ 911, "doc/factint.xml", 24 ], [ 912, "doc/factint.xml", 25 ], [ 925, "doc/factint.xml", 26 ], [ 936, "doc/factint.xml", 27 ], [ 952, "doc/factint.xml", 28 ], [ 995, "doc/factint.xml", 29 ], [ 1010, "doc/factint.xml", 30 ], [ 1070, "doc/factint.xml", 31 ], [ 1086, "doc/factint.xml", 32 ], [ 1100, "doc/factint.xml", 33 ], [ 1138, "doc/factint.xml", 34 ], [ 1170, "doc/factint.xml", 35 ], [ 1200, "doc/factint.xml", 36 ], [ 1222, "doc/factint.xml", 37 ], [ 1237, "doc/factint.xml", 38 ], [ 1249, "doc/factint.xml", 39 ], [ 1278, "doc/factint.xml", 40 ], [ 1292, "doc/factint.xml", 41 ], [ 1341, "doc/factint.xml", 42 ], [ 1342, "doc/factint.xml", 43 ], [ 1412, "doc/factint.xml", 44 ], [ 1485, "doc/factint.xml", 45 ], [ 1555, "doc/factint.xml", 46 ], [ 1600, "doc/factint.xml", 47 ], [ 1601, "doc/factint.xml", 48 ], [ 1666, "doc/factint.xml", 49 ], [ 1733, "doc/factint.xml", 50 ], [ 1799, "doc/factint.xml", 51 ], [ 1853, "doc/factint.xml", 52 ], [ 1854, "doc/factint.xml", 53 ], [ 1909, "doc/factint.xml", 54 ], [ 1974, "doc/factint.xml", 55 ], [ 2047, "doc/factint.xml", 56 ], [ 2062, "doc/factint.xml", 57 ], [ 2064, "doc/abstract.xml", 1 ], [ 2142, "doc/abstract.xml", 2 ], [ 2220, "doc/abstract.xml", 3 ], [ 2298, "doc/abstract.xml", 4 ], [ 2376, "doc/abstract.xml", 5 ], [ 2454, "doc/abstract.xml", 6 ], [ 2455, "doc/abstract.xml", 7 ], [ 2466, "doc/abstract.xml", 8 ], [ 2467, "doc/abstract.xml", 9 ], [ 2532, "doc/abstract.xml", 10 ], [ 2601, "doc/abstract.xml", 11 ], [ 2669, "doc/abstract.xml", 12 ], [ 2681, "doc/abstract.xml", 13 ], [ 2682, "doc/abstract.xml", 14 ], [ 2689, "doc/abstract.xml", 15 ], [ 2725, "doc/abstract.xml", 16 ], [ 2761, "doc/abstract.xml", 17 ], [ 2805, "doc/abstract.xml", 18 ], [ 2857, "doc/abstract.xml", 19 ], [ 2915, "doc/abstract.xml", 20 ], [ 2923, "doc/abstract.xml", 21 ], [ 2924, "doc/abstract.xml", 22 ], [ 2991, "doc/abstract.xml", 23 ], [ 3059, "doc/abstract.xml", 24 ], [ 3060, "doc/abstract.xml", 25 ], [ 3129, "doc/abstract.xml", 26 ], [ 3204, "doc/abstract.xml", 27 ], [ 3271, "doc/abstract.xml", 28 ], [ 3328, "doc/abstract.xml", 29 ], [ 3329, "doc/abstract.xml", 30 ], [ 3341, "doc/abstract.xml", 31 ], [ 3342, "doc/abstract.xml", 32 ], [ 3420, "doc/factint.xml", 57 ], [ 3421, "doc/factint.xml", 58 ], [ 3442, "doc/factint.xml", 59 ], [ 3516, "doc/factint.xml", 60 ], [ 3554, "doc/factint.xml", 61 ], [ 3576, "doc/factint.xml", 62 ], [ 3589, "doc/factint.xml", 63 ], [ 3590, "doc/factint.xml", 64 ], [ 3668, "doc/factint.xml", 65 ], [ 3669, "doc/factint.xml", 66 ], [ 3688, "doc/factint.xml", 67 ], [ 3689, "doc/factint.xml", 68 ], [ 3767, "doc/factint.xml", 69 ], [ 3768, "doc/factint.xml", 70 ], [ 3775, "doc/factint.xml", 71 ], [ 3776, "doc/preface.xml", 1 ], [ 3854, "doc/preface.xml", 2 ], [ 3932, "doc/preface.xml", 3 ], [ 4010, "doc/preface.xml", 4 ], [ 4088, "doc/preface.xml", 5 ], [ 4166, "doc/preface.xml", 6 ], [ 4167, "doc/preface.xml", 7 ], [ 4222, "doc/preface.xml", 8 ], [ 4223, "doc/preface.xml", 9 ], [ 4301, "doc/preface.xml", 10 ], [ 4302, "doc/preface.xml", 11 ], [ 4372, "doc/preface.xml", 12 ], [ 4444, "doc/preface.xml", 13 ], [ 4514, "doc/preface.xml", 14 ], [ 4581, "doc/preface.xml", 15 ], [ 4652, "doc/preface.xml", 16 ], [ 4726, "doc/preface.xml", 17 ], [ 4796, "doc/preface.xml", 18 ], [ 4811, "doc/preface.xml", 19 ], [ 4812, "doc/preface.xml", 20 ], [ 4878, "doc/preface.xml", 21 ], [ 4950, "doc/preface.xml", 22 ], [ 5027, "doc/preface.xml", 23 ], [ 5054, "doc/preface.xml", 24 ], [ 5122, "doc/preface.xml", 25 ], [ 5179, "doc/preface.xml", 26 ], [ 5244, "doc/preface.xml", 27 ], [ 5298, "doc/preface.xml", 28 ], [ 5367, "doc/preface.xml", 29 ], [ 5391, "doc/preface.xml", 30 ], [ 5392, "doc/preface.xml", 31 ], [ 5465, "doc/preface.xml", 32 ], [ 5533, "doc/preface.xml", 33 ], [ 5579, "doc/preface.xml", 34 ], [ 5641, "doc/preface.xml", 35 ], [ 5703, "doc/preface.xml", 36 ], [ 5756, "doc/preface.xml", 37 ], [ 5801, "doc/preface.xml", 38 ], [ 5833, "doc/preface.xml", 39 ], [ 5878, "doc/preface.xml", 40 ], [ 5911, "doc/preface.xml", 41 ], [ 5920, "doc/preface.xml", 42 ], [ 5952, "doc/preface.xml", 43 ], [ 6024, "doc/preface.xml", 44 ], [ 6096, "doc/preface.xml", 45 ], [ 6160, "doc/preface.xml", 46 ], [ 6216, "doc/preface.xml", 47 ], [ 6255, "doc/preface.xml", 48 ], [ 6322, "doc/preface.xml", 49 ], [ 6386, "doc/preface.xml", 50 ], [ 6458, "doc/preface.xml", 51 ], [ 6525, "doc/preface.xml", 52 ], [ 6598, "doc/preface.xml", 53 ], [ 6670, "doc/preface.xml", 54 ], [ 6737, "doc/preface.xml", 55 ], [ 6764, "doc/preface.xml", 56 ], [ 6824, "doc/preface.xml", 57 ], [ 6825, "doc/preface.xml", 58 ], [ 6889, "doc/preface.xml", 59 ], [ 6952, "doc/preface.xml", 60 ], [ 7017, "doc/preface.xml", 61 ], [ 7066, "doc/preface.xml", 62 ], [ 7137, "doc/preface.xml", 63 ], [ 7138, "doc/preface.xml", 64 ], [ 7209, "doc/preface.xml", 65 ], [ 7217, "doc/preface.xml", 66 ], [ 7286, "doc/preface.xml", 67 ], [ 7319, "doc/preface.xml", 68 ], [ 7377, "doc/preface.xml", 69 ], [ 7402, "doc/preface.xml", 70 ], [ 7403, "doc/preface.xml", 71 ], [ 7481, "doc/preface.xml", 72 ], [ 7482, "doc/preface.xml", 73 ], [ 7493, "doc/preface.xml", 74 ], [ 7494, "doc/preface.xml", 75 ], [ 7572, "doc/factint.xml", 72 ], [ 7573, "doc/general.xml", 1 ], [ 7651, "doc/general.xml", 2 ], [ 7729, "doc/general.xml", 3 ], [ 7807, "doc/general.xml", 4 ], [ 7885, "doc/general.xml", 5 ], [ 7963, "doc/general.xml", 6 ], [ 7964, "doc/general.xml", 7 ], [ 7993, "doc/general.xml", 8 ], [ 8046, "doc/general.xml", 9 ], [ 8047, "doc/general.xml", 10 ], [ 8125, "doc/general.xml", 11 ], [ 8126, "doc/general.xml", 12 ], [ 8156, "doc/general.xml", 13 ], [ 8205, "doc/general.xml", 14 ], [ 8206, "doc/general.xml", 15 ], [ 8271, "doc/general.xml", 16 ], [ 8346, "doc/general.xml", 17 ], [ 8365, "doc/general.xml", 18 ], [ 8366, "doc/general.xml", 19 ], [ 8379, "doc/general.xml", 20 ], [ 8451, "doc/general.xml", 21 ], [ 8463, "doc/general.xml", 22 ], [ 8515, "doc/general.xml", 23 ], [ 8528, "doc/general.xml", 24 ], [ 8544, "doc/general.xml", 25 ], [ 8619, "doc/general.xml", 26 ], [ 8694, "doc/general.xml", 27 ], [ 8768, "doc/general.xml", 28 ], [ 8797, "doc/general.xml", 29 ], [ 8869, "doc/general.xml", 30 ], [ 8896, "doc/general.xml", 31 ], [ 8969, "doc/general.xml", 32 ], [ 8982, "doc/general.xml", 33 ], [ 9058, "doc/general.xml", 34 ], [ 9059, "doc/general.xml", 35 ], [ 9133, "doc/general.xml", 36 ], [ 9206, "doc/general.xml", 37 ], [ 9239, "doc/general.xml", 38 ], [ 9315, "doc/general.xml", 39 ], [ 9393, "doc/general.xml", 40 ], [ 9439, "doc/general.xml", 41 ], [ 9517, "doc/general.xml", 42 ], [ 9526, "doc/general.xml", 43 ], [ 9527, "doc/general.xml", 44 ], [ 9601, "doc/general.xml", 45 ], [ 9635, "doc/general.xml", 46 ], [ 9711, "doc/general.xml", 47 ], [ 9781, "doc/general.xml", 48 ], [ 9857, "doc/general.xml", 49 ], [ 9906, "doc/general.xml", 50 ], [ 9973, "doc/general.xml", 51 ], [ 10003, "doc/general.xml", 52 ], [ 10068, "doc/general.xml", 53 ], [ 10110, "doc/general.xml", 54 ], [ 10185, "doc/general.xml", 55 ], [ 10209, "doc/general.xml", 56 ], [ 10210, "doc/general.xml", 57 ], [ 10273, "doc/general.xml", 58 ], [ 10345, "doc/general.xml", 59 ], [ 10382, "doc/general.xml", 60 ], [ 10454, "doc/general.xml", 61 ], [ 10463, "doc/general.xml", 62 ], [ 10464, "doc/general.xml", 63 ], [ 10507, "doc/general.xml", 64 ], [ 10508, "doc/general.xml", 65 ], [ 10519, "doc/general.xml", 66 ], [ 10553, "doc/general.xml", 67 ], [ 10566, "doc/general.xml", 68 ], [ 10611, "doc/general.xml", 69 ], [ 10687, "doc/general.xml", 70 ], [ 10754, "doc/general.xml", 71 ], [ 10782, "doc/general.xml", 72 ], [ 10796, "doc/general.xml", 73 ], [ 10831, "doc/general.xml", 74 ], [ 10844, "doc/general.xml", 75 ], [ 10891, "doc/general.xml", 76 ], [ 10905, "doc/general.xml", 77 ], [ 10942, "doc/general.xml", 78 ], [ 10955, "doc/general.xml", 79 ], [ 11030, "doc/general.xml", 80 ], [ 11044, "doc/general.xml", 81 ], [ 11107, "doc/general.xml", 82 ], [ 11120, "doc/general.xml", 83 ], [ 11190, "doc/general.xml", 84 ], [ 11261, "doc/general.xml", 85 ], [ 11275, "doc/general.xml", 86 ], [ 11316, "doc/general.xml", 87 ], [ 11329, "doc/general.xml", 88 ], [ 11401, "doc/general.xml", 89 ], [ 11471, "doc/general.xml", 90 ], [ 11485, "doc/general.xml", 91 ], [ 11546, "doc/general.xml", 92 ], [ 11559, "doc/general.xml", 93 ], [ 11629, "doc/general.xml", 94 ], [ 11699, "doc/general.xml", 95 ], [ 11713, "doc/general.xml", 96 ], [ 11749, "doc/general.xml", 97 ], [ 11762, "doc/general.xml", 98 ], [ 11819, "doc/general.xml", 99 ], [ 11856, "doc/general.xml", 100 ], [ 11897, "doc/general.xml", 101 ], [ 11960, "doc/general.xml", 102 ], [ 12033, "doc/general.xml", 103 ], [ 12096, "doc/general.xml", 104 ], [ 12127, "doc/general.xml", 105 ], [ 12141, "doc/general.xml", 106 ], [ 12196, "doc/general.xml", 107 ], [ 12209, "doc/general.xml", 108 ], [ 12265, "doc/general.xml", 109 ], [ 12306, "doc/general.xml", 110 ], [ 12369, "doc/general.xml", 111 ], [ 12383, "doc/general.xml", 112 ], [ 12418, "doc/general.xml", 113 ], [ 12431, "doc/general.xml", 114 ], [ 12477, "doc/general.xml", 115 ], [ 12554, "doc/general.xml", 116 ], [ 12595, "doc/general.xml", 117 ], [ 12658, "doc/general.xml", 118 ], [ 12672, "doc/general.xml", 119 ], [ 12715, "doc/general.xml", 120 ], [ 12728, "doc/general.xml", 121 ], [ 12803, "doc/general.xml", 122 ], [ 12844, "doc/general.xml", 123 ], [ 12907, "doc/general.xml", 124 ], [ 12921, "doc/general.xml", 125 ], [ 12956, "doc/general.xml", 126 ], [ 12969, "doc/general.xml", 127 ], [ 13030, "doc/general.xml", 128 ], [ 13094, "doc/general.xml", 129 ], [ 13135, "doc/general.xml", 130 ], [ 13178, "doc/general.xml", 131 ], [ 13246, "doc/general.xml", 132 ], [ 13287, "doc/general.xml", 133 ], [ 13362, "doc/general.xml", 134 ], [ 13385, "doc/general.xml", 135 ], [ 13417, "doc/general.xml", 136 ], [ 13431, "doc/general.xml", 137 ], [ 13443, "doc/general.xml", 138 ], [ 13444, "doc/general.xml", 139 ], [ 13521, "doc/general.xml", 140 ], [ 13561, "doc/general.xml", 141 ], [ 13562, "doc/general.xml", 142 ], [ 13636, "doc/general.xml", 143 ], [ 13712, "doc/general.xml", 144 ], [ 13788, "doc/general.xml", 145 ], [ 13865, "doc/general.xml", 146 ], [ 13939, "doc/general.xml", 147 ], [ 13982, "doc/general.xml", 148 ], [ 13992, "doc/general.xml", 149 ], [ 14002, "doc/general.xml", 150 ], [ 14037, "doc/general.xml", 151 ], [ 14101, "doc/general.xml", 152 ], [ 14128, "doc/general.xml", 153 ], [ 14190, "doc/general.xml", 154 ], [ 14262, "doc/general.xml", 155 ], [ 14334, "doc/general.xml", 156 ], [ 14406, "doc/general.xml", 157 ], [ 14445, "doc/general.xml", 158 ], [ 14449, "doc/general.xml", 159 ], [ 14460, "doc/general.xml", 160 ], [ 14477, "doc/general.xml", 161 ], [ 14491, "doc/general.xml", 162 ], [ 14492, "doc/general.xml", 163 ], [ 14558, "doc/general.xml", 164 ], [ 14616, "doc/general.xml", 165 ], [ 14617, "doc/general.xml", 166 ], [ 14630, "doc/general.xml", 167 ], [ 14699, "doc/general.xml", 168 ], [ 14711, "doc/general.xml", 169 ], [ 14781, "doc/general.xml", 170 ], [ 14849, "doc/general.xml", 171 ], [ 14916, "doc/general.xml", 172 ], [ 14929, "doc/general.xml", 173 ], [ 14945, "doc/general.xml", 174 ], [ 15015, "doc/general.xml", 175 ], [ 15089, "doc/general.xml", 176 ], [ 15145, "doc/general.xml", 177 ], [ 15197, "doc/general.xml", 178 ], [ 15240, "doc/general.xml", 179 ], [ 15314, "doc/general.xml", 180 ], [ 15389, "doc/general.xml", 181 ], [ 15462, "doc/general.xml", 182 ], [ 15534, "doc/general.xml", 183 ], [ 15557, "doc/general.xml", 184 ], [ 15558, "doc/general.xml", 185 ], [ 15604, "doc/general.xml", 186 ], [ 15649, "doc/general.xml", 187 ], [ 15711, "doc/general.xml", 188 ], [ 15721, "doc/general.xml", 189 ], [ 15731, "doc/general.xml", 190 ], [ 15775, "doc/general.xml", 191 ], [ 15834, "doc/general.xml", 192 ], [ 15904, "doc/general.xml", 193 ], [ 15976, "doc/general.xml", 194 ], [ 16048, "doc/general.xml", 195 ], [ 16120, "doc/general.xml", 196 ], [ 16192, "doc/general.xml", 197 ], [ 16264, "doc/general.xml", 198 ], [ 16336, "doc/general.xml", 199 ], [ 16408, "doc/general.xml", 200 ], [ 16442, "doc/general.xml", 201 ], [ 16446, "doc/general.xml", 202 ], [ 16457, "doc/general.xml", 203 ], [ 16474, "doc/general.xml", 204 ], [ 16488, "doc/general.xml", 205 ], [ 16489, "doc/general.xml", 206 ], [ 16500, "doc/general.xml", 207 ], [ 16501, "doc/general.xml", 208 ], [ 16579, "doc/general.xml", 209 ], [ 16580, "doc/general.xml", 210 ], [ 16607, "doc/general.xml", 211 ], [ 16674, "doc/general.xml", 212 ], [ 16675, "doc/general.xml", 213 ], [ 16725, "doc/general.xml", 214 ], [ 16763, "doc/general.xml", 215 ], [ 16772, "doc/general.xml", 216 ], [ 16773, "doc/general.xml", 217 ], [ 16845, "doc/general.xml", 218 ], [ 16872, "doc/general.xml", 219 ], [ 16873, "doc/general.xml", 220 ], [ 16886, "doc/general.xml", 221 ], [ 16918, "doc/general.xml", 222 ], [ 16962, "doc/general.xml", 223 ], [ 17006, "doc/general.xml", 224 ], [ 17066, "doc/general.xml", 225 ], [ 17082, "doc/general.xml", 226 ], [ 17154, "doc/general.xml", 227 ], [ 17172, "doc/general.xml", 228 ], [ 17173, "doc/general.xml", 229 ], [ 17238, "doc/general.xml", 230 ], [ 17314, "doc/general.xml", 231 ], [ 17383, "doc/general.xml", 232 ], [ 17458, "doc/general.xml", 233 ], [ 17532, "doc/general.xml", 234 ], [ 17548, "doc/general.xml", 235 ], [ 17549, "doc/general.xml", 236 ], [ 17603, "doc/general.xml", 237 ], [ 17662, "doc/general.xml", 238 ], [ 17731, "doc/general.xml", 239 ], [ 17805, "doc/general.xml", 240 ], [ 17806, "doc/general.xml", 241 ], [ 17872, "doc/general.xml", 242 ], [ 17945, "doc/general.xml", 243 ], [ 18002, "doc/general.xml", 244 ], [ 18060, "doc/general.xml", 245 ], [ 18077, "doc/general.xml", 246 ], [ 18091, "doc/general.xml", 247 ], [ 18092, "doc/general.xml", 248 ], [ 18103, "doc/general.xml", 249 ], [ 18104, "doc/general.xml", 250 ], [ 18182, "doc/general.xml", 251 ], [ 18183, "doc/general.xml", 252 ], [ 18194, "doc/general.xml", 253 ], [ 18195, "doc/general.xml", 254 ], [ 18273, "doc/factint.xml", 73 ], [ 18274, "doc/methods.xml", 1 ], [ 18352, "doc/methods.xml", 2 ], [ 18430, "doc/methods.xml", 3 ], [ 18508, "doc/methods.xml", 4 ], [ 18586, "doc/methods.xml", 5 ], [ 18664, "doc/methods.xml", 6 ], [ 18665, "doc/methods.xml", 7 ], [ 18694, "doc/methods.xml", 8 ], [ 18761, "doc/methods.xml", 9 ], [ 18762, "doc/methods.xml", 10 ], [ 18832, "doc/methods.xml", 11 ], [ 18901, "doc/methods.xml", 12 ], [ 18972, "doc/methods.xml", 13 ], [ 18988, "doc/methods.xml", 14 ], [ 18989, "doc/methods.xml", 15 ], [ 19067, "doc/methods.xml", 16 ], [ 19068, "doc/methods.xml", 17 ], [ 19104, "doc/methods.xml", 18 ], [ 19138, "doc/methods.xml", 19 ], [ 19139, "doc/methods.xml", 20 ], [ 19190, "doc/methods.xml", 21 ], [ 19191, "doc/methods.xml", 22 ], [ 19204, "doc/methods.xml", 23 ], [ 19276, "doc/methods.xml", 24 ], [ 19288, "doc/methods.xml", 25 ], [ 19362, "doc/methods.xml", 26 ], [ 19435, "doc/methods.xml", 27 ], [ 19457, "doc/methods.xml", 28 ], [ 19470, "doc/methods.xml", 29 ], [ 19486, "doc/methods.xml", 30 ], [ 19548, "doc/methods.xml", 31 ], [ 19621, "doc/methods.xml", 32 ], [ 19693, "doc/methods.xml", 33 ], [ 19703, "doc/methods.xml", 34 ], [ 19713, "doc/methods.xml", 35 ], [ 19742, "doc/methods.xml", 36 ], [ 19790, "doc/methods.xml", 37 ], [ 19794, "doc/methods.xml", 38 ], [ 19805, "doc/methods.xml", 39 ], [ 19822, "doc/methods.xml", 40 ], [ 19836, "doc/methods.xml", 41 ], [ 19837, "doc/methods.xml", 42 ], [ 19848, "doc/methods.xml", 43 ], [ 19849, "doc/methods.xml", 44 ], [ 19927, "doc/methods.xml", 45 ], [ 19928, "doc/methods.xml", 46 ], [ 19966, "doc/methods.xml", 47 ], [ 20006, "doc/methods.xml", 48 ], [ 20007, "doc/methods.xml", 49 ], [ 20063, "doc/methods.xml", 50 ], [ 20064, "doc/methods.xml", 51 ], [ 20077, "doc/methods.xml", 52 ], [ 20146, "doc/methods.xml", 53 ], [ 20178, "doc/methods.xml", 54 ], [ 20190, "doc/methods.xml", 55 ], [ 20264, "doc/methods.xml", 56 ], [ 20337, "doc/methods.xml", 57 ], [ 20359, "doc/methods.xml", 58 ], [ 20372, "doc/methods.xml", 59 ], [ 20388, "doc/methods.xml", 60 ], [ 20464, "doc/methods.xml", 61 ], [ 20536, "doc/methods.xml", 62 ], [ 20593, "doc/methods.xml", 63 ], [ 20665, "doc/methods.xml", 64 ], [ 20740, "doc/methods.xml", 65 ], [ 20793, "doc/methods.xml", 66 ], [ 20794, "doc/methods.xml", 67 ], [ 20860, "doc/methods.xml", 68 ], [ 20926, "doc/methods.xml", 69 ], [ 20999, "doc/methods.xml", 70 ], [ 21074, "doc/methods.xml", 71 ], [ 21146, "doc/methods.xml", 72 ], [ 21189, "doc/methods.xml", 73 ], [ 21252, "doc/methods.xml", 74 ], [ 21310, "doc/methods.xml", 75 ], [ 21384, "doc/methods.xml", 76 ], [ 21458, "doc/methods.xml", 77 ], [ 21514, "doc/methods.xml", 78 ], [ 21587, "doc/methods.xml", 79 ], [ 21664, "doc/methods.xml", 80 ], [ 21729, "doc/methods.xml", 81 ], [ 21797, "doc/methods.xml", 82 ], [ 21873, "doc/methods.xml", 83 ], [ 21883, "doc/methods.xml", 84 ], [ 21893, "doc/methods.xml", 85 ], [ 21953, "doc/methods.xml", 86 ], [ 22016, "doc/methods.xml", 87 ], [ 22088, "doc/methods.xml", 88 ], [ 22160, "doc/methods.xml", 89 ], [ 22232, "doc/methods.xml", 90 ], [ 22274, "doc/methods.xml", 91 ], [ 22334, "doc/methods.xml", 92 ], [ 22405, "doc/methods.xml", 93 ], [ 22439, "doc/methods.xml", 94 ], [ 22443, "doc/methods.xml", 95 ], [ 22454, "doc/methods.xml", 96 ], [ 22471, "doc/methods.xml", 97 ], [ 22485, "doc/methods.xml", 98 ], [ 22486, "doc/methods.xml", 99 ], [ 22497, "doc/methods.xml", 100 ], [ 22498, "doc/methods.xml", 101 ], [ 22576, "doc/methods.xml", 102 ], [ 22577, "doc/methods.xml", 103 ], [ 22614, "doc/methods.xml", 104 ], [ 22654, "doc/methods.xml", 105 ], [ 22655, "doc/methods.xml", 106 ], [ 22711, "doc/methods.xml", 107 ], [ 22712, "doc/methods.xml", 108 ], [ 22725, "doc/methods.xml", 109 ], [ 22800, "doc/methods.xml", 110 ], [ 22832, "doc/methods.xml", 111 ], [ 22844, "doc/methods.xml", 112 ], [ 22918, "doc/methods.xml", 113 ], [ 22991, "doc/methods.xml", 114 ], [ 23013, "doc/methods.xml", 115 ], [ 23026, "doc/methods.xml", 116 ], [ 23042, "doc/methods.xml", 117 ], [ 23118, "doc/methods.xml", 118 ], [ 23190, "doc/methods.xml", 119 ], [ 23256, "doc/methods.xml", 120 ], [ 23328, "doc/methods.xml", 121 ], [ 23403, "doc/methods.xml", 122 ], [ 23456, "doc/methods.xml", 123 ], [ 23457, "doc/methods.xml", 124 ], [ 23527, "doc/methods.xml", 125 ], [ 23589, "doc/methods.xml", 126 ], [ 23664, "doc/methods.xml", 127 ], [ 23740, "doc/methods.xml", 128 ], [ 23813, "doc/methods.xml", 129 ], [ 23888, "doc/methods.xml", 130 ], [ 23926, "doc/methods.xml", 131 ], [ 23972, "doc/methods.xml", 132 ], [ 24040, "doc/methods.xml", 133 ], [ 24050, "doc/methods.xml", 134 ], [ 24060, "doc/methods.xml", 135 ], [ 24120, "doc/methods.xml", 136 ], [ 24163, "doc/methods.xml", 137 ], [ 24220, "doc/methods.xml", 138 ], [ 24289, "doc/methods.xml", 139 ], [ 24326, "doc/methods.xml", 140 ], [ 24375, "doc/methods.xml", 141 ], [ 24427, "doc/methods.xml", 142 ], [ 24494, "doc/methods.xml", 143 ], [ 24498, "doc/methods.xml", 144 ], [ 24509, "doc/methods.xml", 145 ], [ 24526, "doc/methods.xml", 146 ], [ 24540, "doc/methods.xml", 147 ], [ 24541, "doc/methods.xml", 148 ], [ 24552, "doc/methods.xml", 149 ], [ 24553, "doc/methods.xml", 150 ], [ 24631, "doc/methods.xml", 151 ], [ 24632, "doc/methods.xml", 152 ], [ 24658, "doc/methods.xml", 153 ], [ 24710, "doc/methods.xml", 154 ], [ 24711, "doc/methods.xml", 155 ], [ 24754, "doc/methods.xml", 156 ], [ 24785, "doc/methods.xml", 157 ], [ 24794, "doc/methods.xml", 158 ], [ 24795, "doc/methods.xml", 159 ], [ 24808, "doc/methods.xml", 160 ], [ 24834, "doc/methods.xml", 161 ], [ 24897, "doc/methods.xml", 162 ], [ 24943, "doc/methods.xml", 163 ], [ 24962, "doc/methods.xml", 164 ], [ 25025, "doc/methods.xml", 165 ], [ 25068, "doc/methods.xml", 166 ], [ 25080, "doc/methods.xml", 167 ], [ 25154, "doc/methods.xml", 168 ], [ 25227, "doc/methods.xml", 169 ], [ 25249, "doc/methods.xml", 170 ], [ 25262, "doc/methods.xml", 171 ], [ 25278, "doc/methods.xml", 172 ], [ 25347, "doc/methods.xml", 173 ], [ 25365, "doc/methods.xml", 174 ], [ 25433, "doc/methods.xml", 175 ], [ 25479, "doc/methods.xml", 176 ], [ 25540, "doc/methods.xml", 177 ], [ 25596, "doc/methods.xml", 178 ], [ 25659, "doc/methods.xml", 179 ], [ 25683, "doc/methods.xml", 180 ], [ 25760, "doc/methods.xml", 181 ], [ 25834, "doc/methods.xml", 182 ], [ 25887, "doc/methods.xml", 183 ], [ 25888, "doc/methods.xml", 184 ], [ 25957, "doc/methods.xml", 185 ], [ 26012, "doc/methods.xml", 186 ], [ 26079, "doc/methods.xml", 187 ], [ 26146, "doc/methods.xml", 188 ], [ 26206, "doc/methods.xml", 189 ], [ 26207, "doc/methods.xml", 190 ], [ 26279, "doc/methods.xml", 191 ], [ 26290, "doc/methods.xml", 192 ], [ 26359, "doc/methods.xml", 193 ], [ 26430, "doc/methods.xml", 194 ], [ 26497, "doc/methods.xml", 195 ], [ 26564, "doc/methods.xml", 196 ], [ 26614, "doc/methods.xml", 197 ], [ 26676, "doc/methods.xml", 198 ], [ 26746, "doc/methods.xml", 199 ], [ 26782, "doc/methods.xml", 200 ], [ 26849, "doc/methods.xml", 201 ], [ 26920, "doc/methods.xml", 202 ], [ 26961, "doc/methods.xml", 203 ], [ 27020, "doc/methods.xml", 204 ], [ 27097, "doc/methods.xml", 205 ], [ 27106, "doc/methods.xml", 206 ], [ 27107, "doc/methods.xml", 207 ], [ 27174, "doc/methods.xml", 208 ], [ 27250, "doc/methods.xml", 209 ], [ 27318, "doc/methods.xml", 210 ], [ 27393, "doc/methods.xml", 211 ], [ 27468, "doc/methods.xml", 212 ], [ 27523, "doc/methods.xml", 213 ], [ 27598, "doc/methods.xml", 214 ], [ 27643, "doc/methods.xml", 215 ], [ 27644, "doc/methods.xml", 216 ], [ 27718, "doc/methods.xml", 217 ], [ 27796, "doc/methods.xml", 218 ], [ 27863, "doc/methods.xml", 219 ], [ 27941, "doc/methods.xml", 220 ], [ 28002, "doc/methods.xml", 221 ], [ 28077, "doc/methods.xml", 222 ], [ 28150, "doc/methods.xml", 223 ], [ 28224, "doc/methods.xml", 224 ], [ 28274, "doc/methods.xml", 225 ], [ 28328, "doc/methods.xml", 226 ], [ 28337, "doc/methods.xml", 227 ], [ 28338, "doc/methods.xml", 228 ], [ 28412, "doc/methods.xml", 229 ], [ 28484, "doc/methods.xml", 230 ], [ 28558, "doc/methods.xml", 231 ], [ 28609, "doc/methods.xml", 232 ], [ 28682, "doc/methods.xml", 233 ], [ 28750, "doc/methods.xml", 234 ], [ 28805, "doc/methods.xml", 235 ], [ 28867, "doc/methods.xml", 236 ], [ 28922, "doc/methods.xml", 237 ], [ 28983, "doc/methods.xml", 238 ], [ 29055, "doc/methods.xml", 239 ], [ 29125, "doc/methods.xml", 240 ], [ 29190, "doc/methods.xml", 241 ], [ 29261, "doc/methods.xml", 242 ], [ 29337, "doc/methods.xml", 243 ], [ 29394, "doc/methods.xml", 244 ], [ 29464, "doc/methods.xml", 245 ], [ 29509, "doc/methods.xml", 246 ], [ 29581, "doc/methods.xml", 247 ], [ 29657, "doc/methods.xml", 248 ], [ 29733, "doc/methods.xml", 249 ], [ 29781, "doc/methods.xml", 250 ], [ 29782, "doc/methods.xml", 251 ], [ 29824, "doc/methods.xml", 252 ], [ 29895, "doc/methods.xml", 253 ], [ 29964, "doc/methods.xml", 254 ], [ 30039, "doc/methods.xml", 255 ], [ 30106, "doc/methods.xml", 256 ], [ 30184, "doc/methods.xml", 257 ], [ 30258, "doc/methods.xml", 258 ], [ 30334, "doc/methods.xml", 259 ], [ 30360, "doc/methods.xml", 260 ], [ 30421, "doc/methods.xml", 261 ], [ 30490, "doc/methods.xml", 262 ], [ 30545, "doc/methods.xml", 263 ], [ 30618, "doc/methods.xml", 264 ], [ 30696, "doc/methods.xml", 265 ], [ 30761, "doc/methods.xml", 266 ], [ 30839, "doc/methods.xml", 267 ], [ 30903, "doc/methods.xml", 268 ], [ 30974, "doc/methods.xml", 269 ], [ 31037, "doc/methods.xml", 270 ], [ 31113, "doc/methods.xml", 271 ], [ 31123, "doc/methods.xml", 272 ], [ 31133, "doc/methods.xml", 273 ], [ 31181, "doc/methods.xml", 274 ], [ 31204, "doc/methods.xml", 275 ], [ 31275, "doc/methods.xml", 276 ], [ 31288, "doc/methods.xml", 277 ], [ 31292, "doc/methods.xml", 278 ], [ 31303, "doc/methods.xml", 279 ], [ 31320, "doc/methods.xml", 280 ], [ 31334, "doc/methods.xml", 281 ], [ 31335, "doc/methods.xml", 282 ], [ 31346, "doc/methods.xml", 283 ], [ 31347, "doc/methods.xml", 284 ], [ 31425, "doc/methods.xml", 285 ], [ 31426, "doc/methods.xml", 286 ], [ 31454, "doc/methods.xml", 287 ], [ 31514, "doc/methods.xml", 288 ], [ 31515, "doc/methods.xml", 289 ], [ 31566, "doc/methods.xml", 290 ], [ 31605, "doc/methods.xml", 291 ], [ 31614, "doc/methods.xml", 292 ], [ 31615, "doc/methods.xml", 293 ], [ 31628, "doc/methods.xml", 294 ], [ 31664, "doc/methods.xml", 295 ], [ 31718, "doc/methods.xml", 296 ], [ 31747, "doc/methods.xml", 297 ], [ 31794, "doc/methods.xml", 298 ], [ 31806, "doc/methods.xml", 299 ], [ 31856, "doc/methods.xml", 300 ], [ 31869, "doc/methods.xml", 301 ], [ 31885, "doc/methods.xml", 302 ], [ 31957, "doc/methods.xml", 303 ], [ 32024, "doc/methods.xml", 304 ], [ 32075, "doc/methods.xml", 305 ], [ 32076, "doc/methods.xml", 306 ], [ 32143, "doc/methods.xml", 307 ], [ 32201, "doc/methods.xml", 308 ], [ 32266, "doc/methods.xml", 309 ], [ 32336, "doc/methods.xml", 310 ], [ 32403, "doc/methods.xml", 311 ], [ 32424, "doc/methods.xml", 312 ], [ 32425, "doc/methods.xml", 313 ], [ 32494, "doc/methods.xml", 314 ], [ 32569, "doc/methods.xml", 315 ], [ 32628, "doc/methods.xml", 316 ], [ 32699, "doc/methods.xml", 317 ], [ 32771, "doc/methods.xml", 318 ], [ 32846, "doc/methods.xml", 319 ], [ 32891, "doc/methods.xml", 320 ], [ 32942, "doc/methods.xml", 321 ], [ 32981, "doc/methods.xml", 322 ], [ 32994, "doc/methods.xml", 323 ], [ 33068, "doc/methods.xml", 324 ], [ 33143, "doc/methods.xml", 325 ], [ 33181, "doc/methods.xml", 326 ], [ 33257, "doc/methods.xml", 327 ], [ 33286, "doc/methods.xml", 328 ], [ 33335, "doc/methods.xml", 329 ], [ 33411, "doc/methods.xml", 330 ], [ 33480, "doc/methods.xml", 331 ], [ 33539, "doc/methods.xml", 332 ], [ 33611, "doc/methods.xml", 333 ], [ 33682, "doc/methods.xml", 334 ], [ 33749, "doc/methods.xml", 335 ], [ 33819, "doc/methods.xml", 336 ], [ 33890, "doc/methods.xml", 337 ], [ 33957, "doc/methods.xml", 338 ], [ 34004, "doc/methods.xml", 339 ], [ 34067, "doc/methods.xml", 340 ], [ 34138, "doc/methods.xml", 341 ], [ 34209, "doc/methods.xml", 342 ], [ 34269, "doc/methods.xml", 343 ], [ 34337, "doc/methods.xml", 344 ], [ 34382, "doc/methods.xml", 345 ], [ 34452, "doc/methods.xml", 346 ], [ 34516, "doc/methods.xml", 347 ], [ 34581, "doc/methods.xml", 348 ], [ 34619, "doc/methods.xml", 349 ], [ 34692, "doc/methods.xml", 350 ], [ 34702, "doc/methods.xml", 351 ], [ 34712, "doc/methods.xml", 352 ], [ 34752, "doc/methods.xml", 353 ], [ 34799, "doc/methods.xml", 354 ], [ 34803, "doc/methods.xml", 355 ], [ 34814, "doc/methods.xml", 356 ], [ 34831, "doc/methods.xml", 357 ], [ 34845, "doc/methods.xml", 358 ], [ 34846, "doc/methods.xml", 359 ], [ 34857, "doc/methods.xml", 360 ], [ 34858, "doc/methods.xml", 361 ], [ 34936, "doc/methods.xml", 362 ], [ 34937, "doc/methods.xml", 363 ], [ 34964, "doc/methods.xml", 364 ], [ 35030, "doc/methods.xml", 365 ], [ 35031, "doc/methods.xml", 366 ], [ 35088, "doc/methods.xml", 367 ], [ 35133, "doc/methods.xml", 368 ], [ 35142, "doc/methods.xml", 369 ], [ 35143, "doc/methods.xml", 370 ], [ 35156, "doc/methods.xml", 371 ], [ 35191, "doc/methods.xml", 372 ], [ 35251, "doc/methods.xml", 373 ], [ 35279, "doc/methods.xml", 374 ], [ 35325, "doc/methods.xml", 375 ], [ 35337, "doc/methods.xml", 376 ], [ 35387, "doc/methods.xml", 377 ], [ 35400, "doc/methods.xml", 378 ], [ 35416, "doc/methods.xml", 379 ], [ 35488, "doc/methods.xml", 380 ], [ 35553, "doc/methods.xml", 381 ], [ 35604, "doc/methods.xml", 382 ], [ 35605, "doc/methods.xml", 383 ], [ 35672, "doc/methods.xml", 384 ], [ 35730, "doc/methods.xml", 385 ], [ 35795, "doc/methods.xml", 386 ], [ 35865, "doc/methods.xml", 387 ], [ 35932, "doc/methods.xml", 388 ], [ 35953, "doc/methods.xml", 389 ], [ 35954, "doc/methods.xml", 390 ], [ 36016, "doc/methods.xml", 391 ], [ 36086, "doc/methods.xml", 392 ], [ 36152, "doc/methods.xml", 393 ], [ 36218, "doc/methods.xml", 394 ], [ 36244, "doc/methods.xml", 395 ], [ 36318, "doc/methods.xml", 396 ], [ 36396, "doc/methods.xml", 397 ], [ 36470, "doc/methods.xml", 398 ], [ 36536, "doc/methods.xml", 399 ], [ 36610, "doc/methods.xml", 400 ], [ 36676, "doc/methods.xml", 401 ], [ 36721, "doc/methods.xml", 402 ], [ 36722, "doc/methods.xml", 403 ], [ 36798, "doc/methods.xml", 404 ], [ 36873, "doc/methods.xml", 405 ], [ 36932, "doc/methods.xml", 406 ], [ 37003, "doc/methods.xml", 407 ], [ 37075, "doc/methods.xml", 408 ], [ 37136, "doc/methods.xml", 409 ], [ 37205, "doc/methods.xml", 410 ], [ 37280, "doc/methods.xml", 411 ], [ 37332, "doc/methods.xml", 412 ], [ 37395, "doc/methods.xml", 413 ], [ 37466, "doc/methods.xml", 414 ], [ 37539, "doc/methods.xml", 415 ], [ 37612, "doc/methods.xml", 416 ], [ 37623, "doc/methods.xml", 417 ], [ 37682, "doc/methods.xml", 418 ], [ 37756, "doc/methods.xml", 419 ], [ 37831, "doc/methods.xml", 420 ], [ 37908, "doc/methods.xml", 421 ], [ 37982, "doc/methods.xml", 422 ], [ 38058, "doc/methods.xml", 423 ], [ 38080, "doc/methods.xml", 424 ], [ 38081, "doc/methods.xml", 425 ], [ 38155, "doc/methods.xml", 426 ], [ 38230, "doc/methods.xml", 427 ], [ 38303, "doc/methods.xml", 428 ], [ 38375, "doc/methods.xml", 429 ], [ 38448, "doc/methods.xml", 430 ], [ 38520, "doc/methods.xml", 431 ], [ 38587, "doc/methods.xml", 432 ], [ 38620, "doc/methods.xml", 433 ], [ 38688, "doc/methods.xml", 434 ], [ 38733, "doc/methods.xml", 435 ], [ 38808, "doc/methods.xml", 436 ], [ 38884, "doc/methods.xml", 437 ], [ 38954, "doc/methods.xml", 438 ], [ 39002, "doc/methods.xml", 439 ], [ 39078, "doc/methods.xml", 440 ], [ 39088, "doc/methods.xml", 441 ], [ 39098, "doc/methods.xml", 442 ], [ 39137, "doc/methods.xml", 443 ], [ 39190, "doc/methods.xml", 444 ], [ 39194, "doc/methods.xml", 445 ], [ 39205, "doc/methods.xml", 446 ], [ 39222, "doc/methods.xml", 447 ], [ 39236, "doc/methods.xml", 448 ], [ 39237, "doc/methods.xml", 449 ], [ 39267, "doc/methods.xml", 450 ], [ 39268, "doc/methods.xml", 451 ], [ 39279, "doc/methods.xml", 452 ], [ 39280, "doc/methods.xml", 453 ], [ 39358, "doc/methods.xml", 454 ], [ 39359, "doc/methods.xml", 455 ], [ 39370, "doc/methods.xml", 456 ], [ 39371, "doc/methods.xml", 457 ], [ 39449, "doc/factint.xml", 74 ], [ 39450, "doc/timings.xml", 1 ], [ 39528, "doc/timings.xml", 2 ], [ 39606, "doc/timings.xml", 3 ], [ 39684, "doc/timings.xml", 4 ], [ 39762, "doc/timings.xml", 5 ], [ 39840, "doc/timings.xml", 6 ], [ 39841, "doc/timings.xml", 7 ], [ 39870, "doc/timings.xml", 8 ], [ 39930, "doc/timings.xml", 9 ], [ 39931, "doc/timings.xml", 10 ], [ 40009, "doc/timings.xml", 11 ], [ 40010, "doc/timings.xml", 12 ], [ 40073, "doc/timings.xml", 13 ], [ 40138, "doc/timings.xml", 14 ], [ 40139, "doc/timings.xml", 15 ], [ 40212, "doc/timings.xml", 16 ], [ 40278, "doc/timings.xml", 17 ], [ 40352, "doc/timings.xml", 18 ], [ 40420, "doc/timings.xml", 19 ], [ 40445, "doc/timings.xml", 20 ], [ 40512, "doc/timings.xml", 21 ], [ 40560, "doc/timings.xml", 22 ], [ 40561, "doc/timings.xml", 23 ], [ 40635, "doc/timings.xml", 24 ], [ 40691, "doc/timings.xml", 25 ], [ 40766, "doc/timings.xml", 26 ], [ 40799, "doc/timings.xml", 27 ], [ 40853, "doc/timings.xml", 28 ], [ 40892, "doc/timings.xml", 29 ], [ 40952, "doc/timings.xml", 30 ], [ 40986, "doc/timings.xml", 31 ], [ 41054, "doc/timings.xml", 32 ], [ 41093, "doc/timings.xml", 33 ], [ 41148, "doc/timings.xml", 34 ], [ 41149, "doc/timings.xml", 35 ], [ 41217, "doc/timings.xml", 36 ], [ 41282, "doc/timings.xml", 37 ], [ 41329, "doc/timings.xml", 38 ], [ 41394, "doc/timings.xml", 39 ], [ 41456, "doc/timings.xml", 40 ], [ 41528, "doc/timings.xml", 41 ], [ 41563, "doc/timings.xml", 42 ], [ 41625, "doc/timings.xml", 43 ], [ 41668, "doc/timings.xml", 44 ], [ 41736, "doc/timings.xml", 45 ], [ 41806, "doc/timings.xml", 46 ], [ 41849, "doc/timings.xml", 47 ], [ 41850, "doc/timings.xml", 48 ], [ 41861, "doc/timings.xml", 49 ], [ 41862, "doc/timings.xml", 50 ], [ 41940, "doc/timings.xml", 51 ], [ 41941, "doc/timings.xml", 52 ], [ 41980, "doc/timings.xml", 53 ], [ 42019, "doc/timings.xml", 54 ], [ 42020, "doc/timings.xml", 55 ], [ 42095, "doc/timings.xml", 56 ], [ 42116, "doc/timings.xml", 57 ], [ 42176, "doc/timings.xml", 58 ], [ 42244, "doc/timings.xml", 59 ], [ 42318, "doc/timings.xml", 60 ], [ 42365, "doc/timings.xml", 61 ], [ 42441, "doc/timings.xml", 62 ], [ 42485, "doc/timings.xml", 63 ], [ 42560, "doc/timings.xml", 64 ], [ 42633, "doc/timings.xml", 65 ], [ 42705, "doc/timings.xml", 66 ], [ 42777, "doc/timings.xml", 67 ], [ 42850, "doc/timings.xml", 68 ], [ 42878, "doc/timings.xml", 69 ], [ 42951, "doc/timings.xml", 70 ], [ 43017, "doc/timings.xml", 71 ], [ 43083, "doc/timings.xml", 72 ], [ 43153, "doc/timings.xml", 73 ], [ 43196, "doc/timings.xml", 74 ], [ 43246, "doc/timings.xml", 75 ], [ 43313, "doc/timings.xml", 76 ], [ 43372, "doc/timings.xml", 77 ], [ 43439, "doc/timings.xml", 78 ], [ 43504, "doc/timings.xml", 79 ], [ 43567, "doc/timings.xml", 80 ], [ 43568, "doc/timings.xml", 81 ], [ 43636, "doc/timings.xml", 82 ], [ 43707, "doc/timings.xml", 83 ], [ 43769, "doc/timings.xml", 84 ], [ 43840, "doc/timings.xml", 85 ], [ 43899, "doc/timings.xml", 86 ], [ 43969, "doc/timings.xml", 87 ], [ 44042, "doc/timings.xml", 88 ], [ 44076, "doc/timings.xml", 89 ], [ 44077, "doc/timings.xml", 90 ], [ 44148, "doc/timings.xml", 91 ], [ 44217, "doc/timings.xml", 92 ], [ 44281, "doc/timings.xml", 93 ], [ 44351, "doc/timings.xml", 94 ], [ 44416, "doc/timings.xml", 95 ], [ 44484, "doc/timings.xml", 96 ], [ 44551, "doc/timings.xml", 97 ], [ 44571, "doc/timings.xml", 98 ], [ 44572, "doc/timings.xml", 99 ], [ 44636, "doc/timings.xml", 100 ], [ 44707, "doc/timings.xml", 101 ], [ 44723, "doc/timings.xml", 102 ], [ 44774, "doc/timings.xml", 103 ], [ 44847, "doc/timings.xml", 104 ], [ 44909, "doc/timings.xml", 105 ], [ 44969, "doc/timings.xml", 106 ], [ 45043, "doc/timings.xml", 107 ], [ 45117, "doc/timings.xml", 108 ], [ 45189, "doc/timings.xml", 109 ], [ 45190, "doc/timings.xml", 110 ], [ 45201, "doc/timings.xml", 111 ], [ 45202, "doc/timings.xml", 112 ], [ 45280, "doc/timings.xml", 113 ], [ 45281, "doc/timings.xml", 114 ], [ 45321, "doc/timings.xml", 115 ], [ 45361, "doc/timings.xml", 116 ], [ 45362, "doc/timings.xml", 117 ], [ 45434, "doc/timings.xml", 118 ], [ 45478, "doc/timings.xml", 119 ], [ 45553, "doc/timings.xml", 120 ], [ 45622, "doc/timings.xml", 121 ], [ 45678, "doc/timings.xml", 122 ], [ 45749, "doc/timings.xml", 123 ], [ 45825, "doc/timings.xml", 124 ], [ 45884, "doc/timings.xml", 125 ], [ 45952, "doc/timings.xml", 126 ], [ 46023, "doc/timings.xml", 127 ], [ 46099, "doc/timings.xml", 128 ], [ 46164, "doc/timings.xml", 129 ], [ 46235, "doc/timings.xml", 130 ], [ 46310, "doc/timings.xml", 131 ], [ 46379, "doc/timings.xml", 132 ], [ 46380, "doc/timings.xml", 133 ], [ 46391, "doc/timings.xml", 134 ], [ 46392, "doc/timings.xml", 135 ], [ 46470, "doc/timings.xml", 136 ], [ 46471, "doc/timings.xml", 137 ], [ 46482, "doc/timings.xml", 138 ], [ 46483, "doc/timings.xml", 139 ], [ 46561, "doc/factint.xml", 75 ], [ 46562, "doc/factint.xml", 76 ], [ 46563, "doc/factint.xml", 77 ], [ 46571, "doc/factint.xml", 78 ], [ 46572, "doc/factint.xml", 79 ], [ 46650, "doc/factint.xml", 80 ], [ 46651, "doc/factint.xml", 81 ], [ 46694, "doc/factint.xml", 82 ], [ 46695, "doc/factint.xml", 83 ], [ 46707, "doc/factint.xml", 84 ], [ 46708, "doc/factint.xml", 85 ], [ 46786, "doc/factint.xml", 86 ], [ 46787, "doc/factint.xml", 87 ], [ 46795, "doc/factint.xml", 88 ], [ 46796, "doc/factint.xml", 89 ] ], labels := rec( ("CFRAC (shorthand for FactorsCFRAC)") := [ "3.5-1", "chap3_mj.html#X7A5C8BC5861CFC8C" ], ("ECM (shorthand for FactorsECM)") := [ "3.4-1", "chap3_mj.html#X87B162F878AD031C" ], ("FactInt (factorization of an integer)") := [ "2.1-2", "chap2_mj.html#X866CD23D78460060" ], ("FactIntInfo (setting the InfoLevel of InfoFactInt)") := [ "2.2-1", "chap2_mj.html#X8093BB787C2E764B" ], ("Factors (FactInt's method, for integers)") := [ "2.1-1", "chap2_mj.html#X833B087D7A83BC7A" ], ("FactorsCFRAC (Continued Fraction Algorithm, CFRAC)") := [ "3.5-1", "chap3_mj.html#X7A5C8BC5861CFC8C" ], ("FactorsECM (Elliptic Curves Method, ECM)") := [ "3.4-1", "chap3_mj.html#X87B162F878AD031C" ], ("FactorsMPQS (Multiple Polynomial Quadratic Sieve, MPQS)") := [ "3.6-1", "chap3_mj.html#X86F8DFB681442E05" ], ("FactorsPminus1 (Pollard's p-1)") := [ "3.2-1", "chap3_mj.html#X7AF95E2E87F58200" ], ("FactorsPplus1 (Williams' p+1)") := [ "3.3-1", "chap3_mj.html#X8079A0367DE4FC35" ], ("FactorsTD (trial division)") := [ "3.1-1", "chap3_mj.html#X7C4D255A789F54B4" ], ("InfoFactInt (FactInt's Info class)") := [ "2.2-1", "chap2_mj.html#X8093BB787C2E764B" ], ("MPQS (shorthand for FactorsMPQS)") := [ "3.6-1", "chap3_mj.html#X86F8DFB681442E05" ], ("ch:General") := [ "2", "chap2_mj.html#X7B1A84BB788FC526" ], ("ch:Methods") := [ "3", "chap3_mj.html#X7E7EE1A1785A8009" ], ("ch:Preface") := [ "1", "chap1_mj.html#X874E1D45845007FE" ], ("ch:Timings") := [ "4", "chap4_mj.html#X85B6B6E4796B99EE" ], ("sec:CFRAC") := [ "3.5", "chap3_mj.html#X78466BB97BEE5495" ], ("sec:ECM") := [ "3.4", "chap3_mj.html#X7837106783A5194B" ], ("sec:Factors") := [ "2.1", "chap2_mj.html#X83ED82A07BE49B2B" ], ("sec:Info") := [ "2.2", "chap2_mj.html#X80EB87DD80462F80" ], ("sec:MPQS") := [ "3.6", "chap3_mj.html#X7A5C621C7FCFAA8A" ], ("sec:PollardsPminus1") := [ "3.2", "chap3_mj.html#X8431850F7D018CC1" ], ("sec:TimingsForTheECM") := [ "4.2", "chap4_mj.html#X8131C8BD7F637545" ] , ("sec:TimingsForTheGeneralFactorizationRoutine") := [ "4.1", "chap4_mj.html#X825FC33479FE2B1D" ], ("sec:TimingsForTheMPQS") := [ "4.3", "chap4_mj.html#X7E2D09BD7AD0D77F" ], ("sec:TrialDivision") := [ "3.1", "chap3_mj.html#X7A0392177E697956" ], ("sec:WilliamsPplus1") := [ "3.3", "chap3_mj.html#X83A8E5F57D0394A5" ] ) , labeltexts := rec( ("ch:General") := "The General Factorization Rou\ tine", ("ch:Methods") := "The Routines for Specific Fac\ torization Methods", ("ch:Preface") := "Preface", ("ch:Timings") := "How much Time does a Factoriz\ ation take?", ("sec:CFRAC") := "The Continued Fraction Algorit\ hm (CFRAC)", ("sec:ECM") := "The Elliptic Curves Method (ECM)\ ", ("sec:Factors") := "The method for Factors", ("sec:Info") := "Getting information about the f\ actoring process", ("sec:MPQS") := "The Multiple Polynomial Quadrat\ ic Sieve (MPQS)", ("sec:PollardsPminus1") := "Pollard's \\(p-1\\)", ("sec:TimingsForTheECM") := "Timings for the ECM\ ", ("sec:TimingsForTheGeneralFactorizationRoutine") := "Timings for the general factorization routine", ("sec:TimingsForTheMPQS") := "Timings for the MP\ QS", ("sec:TrialDivision") := "Trial division" , ("sec:WilliamsPplus1") := "Williams' \\(p+1\\)" ), linelength := 76, mathmode := "MathJax", name := "WHOLEDOCUMENT", next := 46892, root := ~, six := [ [ "Title page", ".", [ 0, 0, 0 ], 1, 1, "title page", "X7D2C85EC87DD46E5" ], [ "Abstract", ".-2", [ 0, 0, 2 ], 30, 2, "abstract", "X7AA6C5737B711C89" ], [ "Copyright", ".-1", [ 0, 0, 1 ], 53, 2, "copyright", "X81488B807F2A1CF1" ], [ "Acknowledgements", ".-3", [ 0, 0, 3 ], 72, 2, "acknowledgements", "X82A988D47DFAFCFA" ], [ "Table of Contents", ".-4", [ 0, 0, 4 ], 78, 3, "table of contents", "X8537FEB07AF2BEC8" ], [ "\033[1X\033[33X\033[0;-2YPreface\033[133X\033[101X", "1", [ 1, 0, 0 ], 1, 4, "preface", "X874E1D45845007FE" ], [ "\033[1X\033[33X\033[0;-2YThe General Factorization Routine\033[133X\\ 033[101X", "2", [ 2, 0, 0 ], 1, 5, "the general factorization routine", "X7B1A84BB788FC526" ], [ "\033[1X\033[33X\033[0;-2YThe method for \033[10XFactors\033[110X\033[1\ 01X\027\033[1X\027\033[133X\033[101X", "2.1", [ 2, 1, 0 ], 4, 5, "the method for factors\027\027", "X83ED82A07BE49B2B" ], [ "\033[1X\033[33X\033[0;-2YGetting information about the factoring proce\ ss\033[133X\033[101X", "2.2", [ 2, 2, 0 ], 147, 7, "getting information about the factoring process", "X80EB87DD80462F80" ], [ "\033[1X\033[33X\033[0;-2YThe Routines for Specific Factorization Metho\ ds\033[133X\033[101X", "3", [ 3, 0, 0 ], 1, 8, "the routines for specific factorization methods", "X7E7EE1A1785A8009" ], [ "\033[1X\033[33X\033[0;-2YTrial division\033[133X\033[101X", "3.1", [ 3, 1, 0 ], 8, 8, "trial division", "X7A0392177E697956" ], [ "\033[1X\033[33X\033[0;-2YPollard's \033[22Xp-1\033[122X\033[101X\027\\ 033[1X\027\033[133X\033[101X", "3.2", [ 3, 2, 0 ], 29, 8, "pollards p-1\027\027", "X8431850F7D018CC1" ], [ "\033[1X\033[33X\033[0;-2YWilliams' \033[22Xp+1\033[122X\033[101X\027\\ 033[1X\027\033[133X\033[101X", "3.3", [ 3, 3, 0 ], 70, 9, "williams p+1\027\027", "X83A8E5F57D0394A5" ], [ "\033[1X\033[33X\033[0;-2YThe Elliptic Curves Method (ECM)\033[133X\\ 033[101X", "3.4", [ 3, 4, 0 ], 106, 10, "the elliptic curves method ecm", "X7837106783A5194B" ], [ "\033[1X\033[33X\033[0;-2YThe Continued Fraction Algorithm (CFRAC)\033[\ 133X\033[101X", "3.5", [ 3, 5, 0 ], 194, 11, "the continued fraction algorithm cfrac", "X78466BB97BEE5495" ], [ "\033[1X\033[33X\033[0;-2YThe Multiple Polynomial Quadratic Sieve (MPQS\ )\033[133X\033[101X", "3.6", [ 3, 6, 0 ], 240, 12, "the multiple polynomial quadratic sieve mpqs", "X7A5C621C7FCFAA8A" ], [ "\033[1X\033[33X\033[0;-2YHow much Time does a Factorization take?\033[\ 133X\033[101X", "4", [ 4, 0, 0 ], 1, 13, "how much time does a factorization take?", "X85B6B6E4796B99EE" ], [ "\033[1X\033[33X\033[0;-2YTimings for the general factorization routin\ e\033[133X\033[101X", "4.1", [ 4, 1, 0 ], 4, 13, "timings for the general factorization routine", "X825FC33479FE2B1D" ], [ "\033[1X\033[33X\033[0;-2YTimings for the ECM\033[133X\033[101X", "4.2", [ 4, 2, 0 ], 30, 13, "timings for the ecm", "X8131C8BD7F637545" ], [ "\033[1X\033[33X\033[0;-2YTimings for the MPQS\033[133X\033[101X", "4.3", [ 4, 3, 0 ], 80, 14, "timings for the mpqs", "X7E2D09BD7AD0D77F" ], [ "Bibliography", "Bib", [ "Bib", 0, 0 ], 1, 15, "bibliography", "X7A6F98FD85F02BFE" ], [ "References", "Bib", [ "Bib", 0, 0 ], 1, 15, "references", "X7A6F98FD85F02BFE" ], [ "Index", "Ind", [ "Ind", 0, 0 ], 1, 16, "index", "X83A0356F839C696F" ] , [ "prime ideal", "1.", [ 1, 0, 0 ], 1, 4, "prime ideal", "X874E1D45845007FE" ], [ "Generalized Number Field Sieve", "1.", [ 1, 0, 0 ], 1, 4, "generalized number field sieve", "X874E1D45845007FE" ], [ "Pollard's Rho", "1.", [ 1, 0, 0 ], 1, 4, "pollards rho", "X874E1D45845007FE" ], [ "RSA Factoring Challenge", "1.", [ 1, 0, 0 ], 1, 4, "rsa factoring challenge", "X874E1D45845007FE" ], [ "\033[2XFactors\033[102X (FactInt's method, for integers)", "2.1-1", [ 2, 1, 1 ], 10, 5, "factors factints method for integers", "X833B087D7A83BC7A" ], [ "primality of the factors", "2.1-1", [ 2, 1, 1 ], 10, 5, "primality of the factors", "X833B087D7A83BC7A" ], [ "\033[2XFactInt\033[102X (factorization of an integer)", "2.1-2", [ 2, 1, 2 ], 113, 7, "factint factorization of an integer", "X866CD23D78460060" ], [ "information about factoring process", "2.2", [ 2, 2, 0 ], 147, 7, "information about factoring process", "X80EB87DD80462F80" ], [ "\033[2XInfoFactInt\033[102X (FactInt's Info class)", "2.2-1", [ 2, 2, 1 ], 153, 7, "infofactint factints info class", "X8093BB787C2E764B" ], [ "\033[2XFactIntInfo\033[102X (setting the InfoLevel of InfoFactInt)", "2.2-1", [ 2, 2, 1 ], 153, 7, "factintinfo setting the infolevel of infofactint", "X8093BB787C2E764B" ], [ "trial division", "3.1", [ 3, 1, 0 ], 8, 8, "trial division", "X7A0392177E697956" ], [ "\033[2XFactorsTD\033[102X (trial division)", "3.1-1", [ 3, 1, 1 ], 11, 8, "factorstd trial division", "X7C4D255A789F54B4" ], [ "Pollard's \033[22Xp-1\033[122X", "3.2", [ 3, 2, 0 ], 29, 8, "pollards p-1", "X8431850F7D018CC1" ], [ "\033[2XFactorsPminus1\033[102X (Pollard's p-1)", "3.2-1", [ 3, 2, 1 ], 32, 8, "factorspminus1 pollards p-1", "X7AF95E2E87F58200" ], [ "Lagrange's Theorem", "3.2-1", [ 3, 2, 1 ], 32, 8, "lagranges theorem", "X7AF95E2E87F58200" ], [ "Williams' \033[22Xp+1\033[122X", "3.3", [ 3, 3, 0 ], 70, 9, "williams p+1", "X83A8E5F57D0394A5" ], [ "\033[2XFactorsPplus1\033[102X (Williams' p+1)", "3.3-1", [ 3, 3, 1 ], 73, 9, "factorspplus1 williams p+1", "X8079A0367DE4FC35" ], [ "Elliptic Curves Method (ECM)", "3.4", [ 3, 4, 0 ], 106, 10, "elliptic curves method ecm", "X7837106783A5194B" ], [ "\033[2XFactorsECM\033[102X (Elliptic Curves Method, ECM)", "3.4-1", [ 3, 4, 1 ], 109, 10, "factorsecm elliptic curves method ecm", "X87B162F878AD031C" ], [ "\033[2XECM\033[102X (shorthand for FactorsECM)", "3.4-1", [ 3, 4, 1 ], 109, 10, "ecm shorthand for factorsecm", "X87B162F878AD031C" ], [ "first stage limit", "3.4-1", [ 3, 4, 1 ], 109, 10, "first stage limit", "X87B162F878AD031C" ], [ "second stage limit", "3.4-1", [ 3, 4, 1 ], 109, 10, "second stage limit", "X87B162F878AD031C" ], [ "elliptic curve groups", "3.4-1", [ 3, 4, 1 ], 109, 10, "elliptic curve groups", "X87B162F878AD031C" ], [ "elliptic curve point", "3.4-1", [ 3, 4, 1 ], 109, 10, "elliptic curve point", "X87B162F878AD031C" ], [ "projective coordinates", "3.4-1", [ 3, 4, 1 ], 109, 10, "projective coordinates", "X87B162F878AD031C" ], [ "Weierstrass model", "3.4-1", [ 3, 4, 1 ], 109, 10, "weierstrass model", "X87B162F878AD031C" ], [ "Continued Fraction Algorithm (CFRAC)", "3.5", [ 3, 5, 0 ], 194, 11, "continued fraction algorithm cfrac", "X78466BB97BEE5495" ], [ "\033[2XFactorsCFRAC\033[102X (Continued Fraction Algorithm, CFRAC)", "3.5-1", [ 3, 5, 1 ], 197, 11, "factorscfrac continued fraction algorithm cfrac", "X7A5C8BC5861CFC8C" ], [ "\033[2XCFRAC\033[102X (shorthand for FactorsCFRAC)", "3.5-1", [ 3, 5, 1 ], 197, 11, "cfrac shorthand for factorscfrac", "X7A5C8BC5861CFC8C" ], [ "continued fraction approximation", "3.5-1", [ 3, 5, 1 ], 197, 11, "continued fraction approximation", "X7A5C8BC5861CFC8C" ], [ "factor base", "3.5-1", [ 3, 5, 1 ], 197, 11, "factor base", "X7A5C8BC5861CFC8C" ], [ "factor base large factors", "3.5-1", [ 3, 5, 1 ], 197, 11, "factor base large factors", "X7A5C8BC5861CFC8C" ], [ "Gaussian Elimination", "3.5-1", [ 3, 5, 1 ], 197, 11, "gaussian elimination", "X7A5C8BC5861CFC8C" ], [ "Multiple Polynomial Quadratic Sieve (MPQS)", "3.6", [ 3, 6, 0 ], 240, 12, "multiple polynomial quadratic sieve mpqs", "X7A5C621C7FCFAA8A" ], [ "\033[2XFactorsMPQS\033[102X (Multiple Polynomial Quadratic Sieve, MPQS\ )", "3.6-1", [ 3, 6, 1 ], 243, 12, "factorsmpqs multiple polynomial quadratic sieve mpqs", "X86F8DFB681442E05" ], [ "\033[2XMPQS\033[102X (shorthand for FactorsMPQS)", "3.6-1", [ 3, 6, 1 ], 243, 12, "mpqs shorthand for factorsmpqs", "X86F8DFB681442E05" ], [ "sieving interval", "3.6-1", [ 3, 6, 1 ], 243, 12, "sieving interval", "X86F8DFB681442E05" ] ], sixcount := [ [ 0, 0, 0 ], [ 0, 0, 1 ], [ 0, 0, 2 ], [ 0, 0, 3 ], [ 0, 0, 4 ], [ 1, 0, 0 ], [ 1, 0, 0 ], [ 1, 0, 0 ], [ 1, 0, 0 ], [ 1, 0, 0 ], [ 2, 0, 0 ], [ 2, 1, 0 ], [ 2, 1, 1 ], [ 2, 1, 1 ], [ 2, 1, 2 ], [ 2, 2, 0 ], [ 2, 2, 0 ], [ 2, 2, 1 ], [ 2, 2, 1 ], [ 3, 0, 0 ], [ 3, 1, 0 ], [ 3, 1, 0 ], [ 3, 1, 1 ], [ 3, 2, 0 ], [ 3, 2, 0 ], [ 3, 2, 1 ], [ 3, 2, 1 ], [ 3, 3, 0 ], [ 3, 3, 0 ], [ 3, 3, 1 ], [ 3, 4, 0 ], [ 3, 4, 0 ], [ 3, 4, 1 ], [ 3, 4, 1 ], [ 3, 4, 1 ], [ 3, 4, 1 ], [ 3, 4, 1 ], [ 3, 4, 1 ], [ 3, 4, 1 ], [ 3, 4, 1 ], [ 3, 5, 0 ], [ 3, 5, 0 ], [ 3, 5, 1 ], [ 3, 5, 1 ], [ 3, 5, 1 ], [ 3, 5, 1 ], [ 3, 5, 1 ], [ 3, 5, 1 ], [ 3, 6, 0 ], [ 3, 6, 0 ], [ 3, 6, 1 ], [ 3, 6, 1 ], [ 3, 6, 1 ], [ 4, 0, 0 ], [ 4, 1, 0 ], [ 4, 2, 0 ], [ 4, 3, 0 ], [ "Bib", 0, 0 ], [ "Bib", 0, 0 ], [ "Ind", 0, 0 ] ], sixindex := [ 1, 3, 2, 4, 5, 6, 24, 25, 26, 27, 7, 8, 28, 29, 30, 31, 9, 32, 33, 10, 34, 11, 35, 36, 12, 38, 37, 39, 13, 40, 41, 14, 42, 43, 44, 45, 46, 47, 48, 49, 15, 50, 56, 52, 53, 55, 51, 54, 57, 16, 58, 59, 60, 17, 18, 19, 20, 22, 21, 23 ], start := 0, stop := 46891, toctext := "\n\n3 The Routines for Specific Factorization Methods\n 3.1 Trial\ division\n\n\n\n\n\n\n\n\n\n\n\n" ) gap> gap> #I File: /builddir/build/BUILD/factint/../pkg/factint/doc/manual.lab written. gap> + rm -fr ../../doc ../pkg + exit 0 Executing(%install): /bin/sh -e /var/tmp/rpm-tmp.Nx3hvM + umask 022 + cd /builddir/build/BUILD + '[' /builddir/build/BUILDROOT/gap-pkg-factint-1.5.3-1.fc24.noarch '!=' / ']' + rm -rf /builddir/build/BUILDROOT/gap-pkg-factint-1.5.3-1.fc24.noarch ++ dirname /builddir/build/BUILDROOT/gap-pkg-factint-1.5.3-1.fc24.noarch + mkdir -p /builddir/build/BUILDROOT + mkdir /builddir/build/BUILDROOT/gap-pkg-factint-1.5.3-1.fc24.noarch + cd factint + mkdir -p /builddir/build/BUILDROOT/gap-pkg-factint-1.5.3-1.fc24.noarch/usr/lib/gap/pkg + cp -a ../factint /builddir/build/BUILDROOT/gap-pkg-factint-1.5.3-1.fc24.noarch/usr/lib/gap/pkg/factint + rm -f /builddir/build/BUILDROOT/gap-pkg-factint-1.5.3-1.fc24.noarch/usr/lib/gap/pkg/factint/readme.txt /builddir/build/BUILDROOT/gap-pkg-factint-1.5.3-1.fc24.noarch/usr/lib/gap/pkg/factint/relnotes.txt + rm -f /builddir/build/BUILDROOT/gap-pkg-factint-1.5.3-1.fc24.noarch/usr/lib/gap/pkg/factint/doc/factint.aux /builddir/build/BUILDROOT/gap-pkg-factint-1.5.3-1.fc24.noarch/usr/lib/gap/pkg/factint/doc/factint.bbl /builddir/build/BUILDROOT/gap-pkg-factint-1.5.3-1.fc24.noarch/usr/lib/gap/pkg/factint/doc/factint.blg /builddir/build/BUILDROOT/gap-pkg-factint-1.5.3-1.fc24.noarch/usr/lib/gap/pkg/factint/doc/factint.brf /builddir/build/BUILDROOT/gap-pkg-factint-1.5.3-1.fc24.noarch/usr/lib/gap/pkg/factint/doc/factint.idx /builddir/build/BUILDROOT/gap-pkg-factint-1.5.3-1.fc24.noarch/usr/lib/gap/pkg/factint/doc/factint.ilg /builddir/build/BUILDROOT/gap-pkg-factint-1.5.3-1.fc24.noarch/usr/lib/gap/pkg/factint/doc/factint.ind /builddir/build/BUILDROOT/gap-pkg-factint-1.5.3-1.fc24.noarch/usr/lib/gap/pkg/factint/doc/factint.log /builddir/build/BUILDROOT/gap-pkg-factint-1.5.3-1.fc24.noarch/usr/lib/gap/pkg/factint/doc/factint.out /builddir/build/BUILDROOT/gap-pkg-factint-1.5.3-1.fc24.noarch/usr/lib/gap/pkg/factint/doc/factint.pnr /builddir/build/BUILDROOT/gap-pkg-factint-1.5.3-1.fc24.noarch/usr/lib/gap/pkg/factint/doc/factint.toc + /usr/lib/rpm/find-debuginfo.sh --strict-build-id -m --run-dwz --dwz-low-mem-die-limit 10000000 --dwz-max-die-limit 50000000 /builddir/build/BUILD/factint /usr/lib/rpm/sepdebugcrcfix: Updated 0 CRC32s, 0 CRC32s did match. find: 'debug': No such file or directory + /usr/lib/rpm/check-buildroot + /usr/lib/rpm/brp-compress + /usr/lib/rpm/brp-strip-static-archive /usr/bin/strip + /usr/lib/rpm/brp-python-bytecompile /usr/bin/python 1 + /usr/lib/rpm/brp-python-hardlink + /usr/lib/rpm/redhat/brp-java-repack-jars Executing(%check): /bin/sh -e /var/tmp/rpm-tmp.ICwsuc + umask 022 + cd /builddir/build/BUILD + cd factint + gap -l '/builddir/build/BUILDROOT/gap-pkg-factint-1.5.3-1.fc24.noarch/usr/lib/gap;/usr/lib/gap' + tee log ********* GAP 4.8.3, 19-Mar-2016, build of 2016-05-05 22:03:13 (UTC) * GAP * http://www.gap-system.org ********* Architecture: x86_64-redhat-linux-gnu-gcc-default64 Libs used: gmp, readline Loading the library and packages ... Components: trans 1.0, prim 2.1, small* 1.0, id* 1.0 Packages: FactInt 1.5.3, GAPDoc 1.5.1 Try '?help' for help. See also '?copyright' and '?authors' gap> true gap> factint.tst GAP4stones: 4531037 true gap> + grep -Fvq fail log + rm -f log + exit 0 Processing files: gap-pkg-factint-1.5.3-1.fc24.noarch Executing(%doc): /bin/sh -e /var/tmp/rpm-tmp.IfJVCL + umask 022 + cd /builddir/build/BUILD + cd factint + DOCDIR=/builddir/build/BUILDROOT/gap-pkg-factint-1.5.3-1.fc24.noarch/usr/share/doc/gap-pkg-factint + export DOCDIR + /usr/bin/mkdir -p /builddir/build/BUILDROOT/gap-pkg-factint-1.5.3-1.fc24.noarch/usr/share/doc/gap-pkg-factint + cp -pr readme.txt /builddir/build/BUILDROOT/gap-pkg-factint-1.5.3-1.fc24.noarch/usr/share/doc/gap-pkg-factint + cp -pr relnotes.txt /builddir/build/BUILDROOT/gap-pkg-factint-1.5.3-1.fc24.noarch/usr/share/doc/gap-pkg-factint + exit 0 Provides: gap-pkg-factint = 1.5.3-1.fc24 Requires(rpmlib): rpmlib(CompressedFileNames) <= 3.0.4-1 rpmlib(FileDigests) <= 4.6.0-1 rpmlib(PayloadFilesHavePrefix) <= 4.0-1 Checking for unpackaged file(s): /usr/lib/rpm/check-files /builddir/build/BUILDROOT/gap-pkg-factint-1.5.3-1.fc24.noarch Wrote: /builddir/build/RPMS/gap-pkg-factint-1.5.3-1.fc24.noarch.rpm Executing(%clean): /bin/sh -e /var/tmp/rpm-tmp.WjdRVP + umask 022 + cd /builddir/build/BUILD + cd factint + /usr/bin/rm -rf /builddir/build/BUILDROOT/gap-pkg-factint-1.5.3-1.fc24.noarch + exit 0 Child return code was: 0