%I #19 Nov 22 2022 15:44:29
%S 1,3,4,6,7,8,12,13,14,15,18,20,24,30,31,32,38,40,42,44,48,54,57,60,62,
%T 63,68,72,74,80,84,90,98,102,104,108,110,114,121,127,128,132,133,138,
%U 140,150,152,156,158,164,168,174,180,182,183,192,194,198,200
%N Numbers of the form p^k + p^(k-1) + ... + p + 1 (where p is a prime and k>=0) in ascending order.
%C A proper subset of A002191 (e.g., 28 is in A002191, but not in this sequence). a(15)=31 admits two representations: 31=2^4+2^3+2^2+2+1=5^2+5+1. Are there other numbers with two or more representation?
%C I have checked all the sums of primes up to prime number 56873 to a sum total >= 10^100 and have not come across another number that has multiple representations. - Patrick Schutte (patrick(AT)onyxsa.co.za), Mar 28 2007
%C Goormaghtigh conjecture implies that 31 is the only term with 2 representations; see the Wikipedia link below. - _Jianing Song_, Nov 22 2022
%H M. F. Hasler, <a href="/A108348/b108348.txt">Table of n, a(n) for n = 1..1000</a>
%H Wikipedia, <a href="https://en.wikipedia.org/wiki/Goormaghtigh_conjecture">Goormaghtigh conjecture</a>
%e a(2)=3=2+1 since a(1)=1 and 2 is not expressible in the required form.
%o (PARI) A108348(n)={ local(m=1, a=[m]); while( #a<n, m++; forprime(p=2,m, if( m%p==1 && m*(p-1)==p^round(log(m*(p-1))/log(p))-1, a=concat(a,m);next(2)) ));a }; a=A108348(1000) \\ _M. F. Hasler_
%o (GAP) SumNum := function ( FNum) local a,ap,b,bp,at,bt; a := 2; repeat at := 1; ap := 1; repeat at := at + a^ap; b := 2; repeat bt := 1; bp := 1; repeat bt := bt + b^bp; if at = bt and bp > 1 and a <> b then Print("a ",a," ap ",ap," at ", at," "); Print("b ",b," bp ",bp," bt ", bt," "); Print("---------------- "); fi; bp := bp + 1; until bt > at; b := NextPrime(b); until b >=a; ap := ap + 1; until at > 10^100; a := NextPrime(a); until a >FNum; end; # Patrick Schutte (patrick(AT)onyxsa.co.za), Mar 28 2007
%o (Haskell)
%o a108348 n = a108348_list !! (n-1)
%o a108348_list = 1 : f [2..] where
%o f (x:xs) = g a000040_list where
%o g (p:ps) = h 0 $ map ((`div` (p - 1)) . subtract 1) $
%o iterate (* p) (p ^ 2) where
%o h i (pp:pps) | pp > x = if i == 0 then f xs else g ps
%o | pp < x = h 1 pps
%o | otherwise = x : f xs
%o -- _Reinhard Zumkeller_, Nov 26 2013
%Y Cf. A002191.
%Y Cf. A000040, A090503.
%K nonn
%O 1,2
%A _Franz Vrabec_, Jul 01 2005