Hello. I'm trying to implement the algorithm for representing primes congruent to 1 mod 4 as a sum of squares and I know the logic of the algebra is right (identical equations work in Mathematica). However, I get a "ZeroDivisionError: Inverse does not exist." error when I evaluate the expression
sum_of_squares(73). where the definition of sum_of_squares is def sum_of_squares(p): if p.mod(4)==1: A=startingA(p) print A B=1 M=(A**2+B**2)/p while M>1: [a,b,r]=iterate(A,B,M,p) [A,B,M]=[a,b,r] return [A,B] else: print 'no' The error appears to be when M is computed just before the while loop. I know that A is computed correctly because the correct values come out randomly when I print A, but then I never get to the loop. I evaluate the following before the definition of the function. p=var('p') A=var('A') B=var('B') r=var('r') a=var('a') b=var('b') Anyone know what's going on? The full error message from evaluating sum_of_squares(73) is ]Traceback (most recent call last): File "<stdin>", line 1, in <module> File "_sage_input_36.py", line 10, in <module> exec compile(u'open("___code___.py","w").write("# -*- coding: utf-8 -*-\\n" + _support_.preparse_worksheet_cell(base64.b64decode("c3VtX29mX3NxdWFyZXMoNzMp"),globals()) +"\\n"); execfile(os.path.abspath("___code___.py")) File "", line 1, in <module> File "/private/var/folders/dV/dVqvhWPV2RWo0U+8ZQR1k++++TM/-Tmp-/ tmpGm6sIU/___code___.py", line 3, in <module> exec compile(u'sum_of_squares(_sage_const_73 ) File "", line 1, in <module> File "/private/var/folders/dV/dVqvhWPV2RWo0U+8ZQR1k++++TM/-Tmp-/ tmpXtNmdU/___code___.py", line 8, in sum_of_squares M=(A**_sage_const_2 +B**_sage_const_2 )/p File "element.pyx", line 1551, in sage.structure.element.RingElement.__div__ (sage/structure/element.c: 12000) File "coerce.pyx", line 713, in sage.structure.coerce.CoercionModel_cache_maps.bin_op (sage/structure/ coerce.c:6153) File "element.pyx", line 1549, in sage.structure.element.RingElement.__div__ (sage/structure/element.c: 11981) File "integer_mod.pyx", line 2223, in sage.rings.finite_rings.integer_mod.IntegerMod_int._div_ (sage/rings/ finite_rings/integer_mod.c:19173) ZeroDivisionError: Inverse does not exist. Ken Levasseur UMass Lowell -- To post to this group, send email to sage-support@googlegroups.com To unsubscribe from this group, send email to sage-support+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/sage-support URL: http://www.sagemath.org