| 1 | initial version |
This answer sort of cheats, but:
sage: p = 17
sage: quadratic_residues(p)
[0, 1, 2, 4, 8, 9, 13, 15, 16]
This is, after all, a well-known concept.
This works for your example too, even though 8 isn't prime
sage: quadratic_residues?
Signature: quadratic_residues(n)
Docstring:
Return a sorted list of all squares modulo the integer n in the
range 0<= x < |n|.
Copyright Sage, 2010. Some rights reserved under creative commons license. Content on this site is licensed under a Creative Commons Attribution Share Alike 3.0 license.