WolframLanguage (Mathematica) 187 bytes
Puede haber alguna reducción en el tamaño que se encuentra. Explicación a seguir ...
t=ToString;p=PadLeft;d=DateObject;Cases[""<>{t/@p[#,If[Length@#<5,4, 5]],t/@ p[#2,2],t/@p[#3,2]}&@@@(IntegerDigits/@#[[1]]&/@DayRange[d@#,d@#2]),x_/;PalindromeQ@x&&PrimeQ@ToExpression@x]&
Casos de prueba
t = ToString; p = PadLeft; d = DateObject;
Cases["" <> {t /@ p[#, If[Length@# < 5, 4, 5]], t /@ p[#2, 2],
t /@ p[#3, 2]} & @@@ (IntegerDigits /@ #[[1]] & /@ DayRange[d@#, d@#2]),
x_ /; PalindromeQ@x && PrimeQ@ToExpression@x] &[{10011, 10, 1}, {10017, 1, 1}]
(* {"100111001", "100131001", "100161001"} *)
Explicación de código
DayRange[d@#,d@#2]devuelve todas las fechas entre {10011, 10, 1}y {10017, 1, 1}. En este caso, devuelve aproximadamente 5 años, 4 meses de fechas (precisamente 1920 fechas). Los años bisiestos se tienen en cuenta.
Las fechas se devuelven en el formato estándar Wolfram. Por ejemplo, la primera fecha aparecerá como DateObject[List[1,1,1],"Day","Gregorian",-5.] `
#[[1]] & /@eliminará la parte de la fecha, en cada fecha, que nos concierne. En el ejemplo, DateObject[List[1,3,7],"Day","Gregorian",-5.]devuelve la fecha abreviada, {1,3,7}.
t/@p[#3,2]}o ToString/@Padleft[#3,2]rellena el tercer elemento, a saber, el 7 que se encuentra "para el 7º día del mes" como "07". Se proporciona un relleno similar para el símbolo de un solo dígito para el mes de marzo, es decir, 3se devuelve como "03".
p[#, If[Length@# < 5, 4, 5]]rellena el año con ceros para alcanzar la longitud de una cadena de 4 o 5 dígitos. En este caso, enero, a saber 1, se devuelve como "00001" '.
"" <>...une las cuerdas. En este caso, vuelve "000010307".
Cases[...x_ /; PalindromeQ@x && PrimeQ@ToExpression@x] devuelve esos casos, entre las fechas de 1920, que son palíndromos y números primos.
02-29solo existe para años que son divisibles por 400 o (divisibles por 4 y no divisibles por 100).