%I #23 Feb 19 2024 16:54:15
%S 2,21,6765,10946,2178309,14930352,102334155,701408733,1134903170,
%T 4807526976,20365011074,32951280099,225851433717,1548008755920,
%U 10610209857723,72723460248141,117669030460994,498454011879264,2111485077978050,3416454622906707
%N Fibonacci numbers equal to a promic number or an anagram of a promic number.
%C There are many terms overlapping with A162394. 13 of the first 20 terms are in A162394. - _Chai Wah Wu_, Dec 26 2016
%H Michael S. Branicky, <a href="/A162393/b162393.txt">Table of n, a(n) for n = 1..28</a>
%e a(1) = A000045(3) = 2 is the promic number A002378(1).
%e a(2) = A000045(8) = 21 is an anagram of 12 = A002378(3).
%e a(3) = A000045(20) = 6765 is an anagram of 7656= A002378(87).
%e a(4) = A000045(21) = 10946 is an anagram of 19460 = A002378(139) and 96410 = A002378(310).
%e a(5) = A000045(32) = 2178309 is an anagram of 7308912 = A002378(2703), of 8017392 = A002378(2831) and of 9731280 = A002378(3119).
%p Digits := 200 ; digFreq := proc(n) dgs := convert(n,base,10) ; c := [seq(0,j=0..9)] ; for d in dgs do c := subsop(d+1= op(d+1,c)+1,c) ; od: c; end:
%p isAna := proc(a,b) RETURN( digFreq(a) = digFreq(b)) ; end:
%p isA002378 := proc(n) k := floor(sqrt(n)) ; RETURN(k*(k+1) = n ) ; end:
%p A055642 := proc(n) max(1, ilog10(n)+1) ; end:
%p for n from 1 do f := combinat[fibonacci](n) ; fdgs := A055642(f) ; for k from floor(sqrt(10^(fdgs-1))) do p := k*(k+1) ; if A055642(p) > fdgs then break; fi; if isAna(p,f) then printf("%d,\n",f) ; break; fi; od; od: # _R. J. Mathar_, Aug 14 2009
%o (Python)
%o from math import isqrt
%o from itertools import count, islice
%o def promics(d): # generator of promic numbers with d digits
%o ilb, lb, ub = isqrt(10**(d-1)-1), 10**(d-1), 10**d
%o if d == 1: yield 0
%o for i in count(ilb):
%o p = i*(i+1)
%o if p < lb: continue
%o elif p >= ub: break
%o yield p
%o def agen(): # generator of sequence terms
%o # yield 0 # uncomment if 0 is inserted
%o f, g, n, adict = 1, 2, 1, dict()
%o for d in count(1):
%o P = set("".join(sorted(str(p))) for p in promics(d))
%o while f < 10**d:
%o if "".join(sorted(str(f))) in P: yield f
%o f, g = g, f+g
%o print(list(islice(agen(), 16))) # _Michael S. Branicky_, Feb 19 2024
%Y Cf. A000045, A002378, A162394.
%K nonn,base
%O 1,1
%A _Claudio Meller_, Jul 02 2009
%E Six more terms from _R. J. Mathar_, Aug 14 2009
%E a(13)-a(18) from _Donovan Johnson_, Oct 11 2009
%E a(19)-a(20) from _Chai Wah Wu_, Jan 02 2017