Re: primitive root error
- To: mathgroup at smc.vnet.net
- Subject: [mg128101] Re: primitive root error
- From: Andrzej Kozlowski <akozlowski at gmail.com>
- Date: Sun, 16 Sep 2012 03:22:14 -0400 (EDT)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- Delivered-to: l-mathgroup@wolfram.com
- Delivered-to: mathgroup-newout@smc.vnet.net
- Delivered-to: mathgroup-newsend@smc.vnet.net
- References: <k2ub15$h9h$1@smc.vnet.net> <20120915073839.53E3C6859@smc.vnet.net>
On 15 Sep 2012, at 09:38, daniel.lichtblau0 at gmail.com wrote:
> On Thursday, September 13, 2012 11:16:47 PM UTC-5, Dan Dubin wrote:
>> The number theoretic function PrimitiveRoot[n] is supposed to give the
>>
>> smallest generator for the multiplicative group of integers module n
>>
>> relatively prime to n. However, Mathematica 8 says that
>>
>> PrimitiveRoot[18] equals 11. This is incorrect. While this is a
>>
>> generator, it is not the smallest generator of the group. The correct
>>
>> answer is 5:
>>
>>
>>
>> In[1]:= Table[Mod[5^n, 18], {n, 0, 6}]
>>
>>
>>
>> Out[1]= {1, 5, 7, 17, 13, 11, 1}
>
> Me, I'd call that a mistake in the documentation. Anyway, you can get the smallest by resorting to a crude, nay, barbaric tactic: invoke Wolfram|Alpha to find all the primitive roots.
>
> In[71]:= WolframAlpha["primitive roots of 18", "MathematicaResult"]
>
> Out[71]= {5, 11}
>
> Daniel Lichtblau
> Wolfram Research
>
>
>
This does indeed seem a little barbaric since:
WolframAlpha["primitive roots of 18", "MathematicaResult"] // Timing
{1.87481,{5,11}}
Select[Range[18],
MultiplicativeOrder[#, 18] == EulerPhi[18] &] // Timing
{0.000347,{5,11}}
Andrzej Kozlowski
- References:
- Re: primitive root error
- From: daniel.lichtblau0@gmail.com
- Re: primitive root error