login
a(n) is the least k > n such that n is a primitive root modulo k, or -1 if there is no such k.
4

%I #12 Nov 11 2024 22:26:08

%S 2,3,4,-1,6,11,10,11,-1,17,13,17,19,17,19,-1,22,29,22,23,23,25,25,31,

%T -1,29,29,41,34,41,34,37,38,41,37,-1,46,47,47,47,47,59,46,47,47,67,49,

%U 53,-1,53,53,59,62,59,58,59,67,73,61,73,67,71,67,-1,71,79,71,71,71,79,82,83,83,79,79

%N a(n) is the least k > n such that n is a primitive root modulo k, or -1 if there is no such k.

%C a(n) <= A023049(n).

%C a(n) = 0 iff n is a square > 1.

%H Robert Israel, <a href="/A377938/b377938.txt">Table of n, a(n) for n = 1..10000</a>

%e a(6) = 11 because 6 is a primitive root mod 11 and no number from 7 to 10 has 6 as a primitive root.

%p N:= 1000: # to allow values <= N

%p P:= select(isprime, {seq(i,i=3..N,2)}):

%p Cands:= map(proc(t) local i; (seq(t^i,i=1..ilog[t](N)), seq(2*t^i,i=1..ilog[t](N/2))) end proc,P):

%p Cands:= sort(convert({4} union Cands, list)):

%p Phis:= map(numtheory:-phi, Cands):

%p f:= proc(n)

%p local k0,k;

%p if issqr(n) then return -1 fi;

%p k0:= ListTools:-BinaryPlace(Cands,n)+1;

%p for k from k0 do

%p if igcd(Cands[k],n) = 1 and numtheory:-order(n,Cands[k]) = Phis[k] then return Cands[k] fi

%p od

%p end proc:

%p f(1):= 2:

%p map(f, [$1..200]);

%Y Cf. A023049, A377939. A377940.

%K sign

%O 1,1

%A _Robert Israel_, Nov 11 2024