cp's OEIS Frontend

This is a front-end for the Online Encyclopedia of Integer Sequences, made by Christian Perfect. The idea is to provide OEIS entries in non-ancient HTML, and then to think about how they're presented visually. The source code is on GitHub.

A268629 Primes p that have no squareful primitive roots less than p.

Original entry on oeis.org

3, 5, 7, 13, 17, 19, 23, 31, 41, 43, 47, 61, 71, 73, 79, 97, 103, 127, 191, 193, 223, 239, 241, 311, 313, 337, 409, 433, 439, 457, 479, 601, 719, 769, 839, 911, 1009, 1031, 1033, 1129, 1151, 1201, 1249, 1319, 1321, 1559, 1801, 2089, 2281, 2521, 2689, 2999, 3049, 3361, 3529, 3889
Offset: 1

Views

Author

Michel Marcus, Feb 09 2016

Keywords

Examples

			The primitive roots of 7 less than 7 are 3 and 5. None of them are squareful so 7 is in the sequence.
8 is a primitive root of 11, and 8 is squareful, so 11 is not in the sequence.
		

Crossrefs

Programs

  • Maple
    N:= 10^6: # for terms <= N
    S:= {1}: p:= 1:
    do
      p:= nextprime(p);
      if p^2 > N then break fi;
      S:= S union map(t -> seq(t*p^i, i=2..floor(log[p](N/t))), select(`<=`,S,N/p^2));
    od:
    S:= sort(convert(S,list)):
    nS:= nops(S):
    filter:= proc(p) local i;
      if not isprime(p) then return false fi;
      for i from 1 to nS while S[i] < p do
        if numtheory:-order(S[i],p) = p-1 then return false fi
      od;
      true
    end proc:
    select(filter, [seq(i,i=3..N,2)]); # Robert Israel, Oct 27 2020
  • Mathematica
    selQ[p_] := NoneTrue[PrimitiveRootList[p], #

    = 2&]&]; Select[Prime[Range[2, 500]], selQ] (* Jean-François Alcover, Sep 28 2018 *)

  • PARI
    ar(p) = my(r, pr, j); r=vector(eulerphi(p-1)); pr=znprimroot(p); for(i=1, p-1, if(gcd(i, p-1)==1, r[j++]=lift(pr^i))); vecsort(r) ; \\ from A060749
    isok(p) = {my(v = ar(p)); for (i=1, #v, if (ispowerful(v[i]), return(0));); 1;}
    lista(nn) = forprime(p=1, nn, if (isok(p), print1(p, ", ")));
    
  • Python
    from functools import cache
    from math import gcd
    from itertools import count, islice
    from sympy import factorint, prime, n_order
    @cache
    def is_squareful(n): return n == 1 or min(factorint(n).values()) > 1
    def A268629_gen(): # generator of terms
        for n in count(1):
            p = prime(n)
            for i in range(1,p):
                if gcd(i,p) == 1 and is_squareful(i) and n_order(i, p)==p-1:
                    break
            else:
                yield p
    A268629_list = list(islice(A268629_gen(),20)) # Chai Wah Wu, Sep 14 2022