In all recent alphas and rc0: sage: primitive_root(15) 2 sage: mod(2,15).multiplicative_order() 4 sage: euler_phi(15) 8 sage: [mod(2,15)^i for i in [1..8]] [2, 4, 8, 1, 2, 4, 8, 1]
sage: b = pari(15) sage: b.znprimroot() Mod(2, 15) Definition: b.znprimroot(self) Docstring: Return a primitive root modulo self, whenever it exists. This is a generator of the group (ZZ/nZZ)^*, whenever this group is cyclic, i.e. if n=4 or n=p^k or n=2p^k, where p is an odd prime and k is a natural number. INPUT: * ``self`` - positive integer equal to 4, or a power of an odd prime, or twice a power of an odd prime BUT ---------------------------------------------------------------------- | Sage Version 4.4.4, Release Date: 2010-06-23 | | Type notebook() for the GUI, and license() for information. | ---------------------------------------------------------------------- Loading Sage library. Current Mercurial branch is: hackbranch sage: primitive_root(15) <snip> ArithmeticError: There is no primitive root modulo n Please tell me that I am just missing some obvious reason this is correct behavior. Or has Pari changed its definition? But http://pari.math.u-bordeaux.fr/dochtml/html.stable/Arithmetic_functions.html#znprimroot says znprimroot(n) returns a primitive root (generator) of (Z/nZ)^*, whenever this latter group is cyclic (n = 4 or n = 2p^k or n = p^k, where p is an odd prime and k >= 0). The library syntax is gener(x). - kcrisman -- 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