Mam napisać program który wypisze liczbę liczb super'b'pierwszych w przedziale od 2 do 1000 wynika ma być około 50 a mi wyrzuca 89 i nie mogę się doszukać błędu, jak dla mnie wygląda, że jest w porządku i powinno działać. Proszę o sugestie jak to poprawić. Liczba super'b'pierwsza to taka która jest pierwsza, której suma cyfr jest liczbą pierwszą oraz suma cyfr jej reprezentacji binarnej jest liczbą pierwszą.
program spierw;
uses crt;
var l,d:longint;
function pierwsza(liczba:longint):boolean;
var a:longint;
begin
pierwsza:=true;
for a:=2 to liczba div 2 do
begin
if (liczba mod a=0) then
pierwsza:=false;
end; end;
function sumadec(liczba:longint):longint;
var suma:longint;
begin
suma:=0;
while liczba > 0 do
begin
suma:=suma + liczba mod 10;
liczba:=liczba div 10;
end;
sumadec:=suma;
end;
function dectobin(liczba:longint):longint;
var
bin:string;
begin
repeat
if (liczba mod 2=1)
then bin:='1' + bin
else
bin:='0' + bin;
liczba:=liczba div 2;
until liczba=0;
Val(bin,dectobin);
end;
begin
clrscr;
d:=0;
for l:=2 to 1000 do
begin
if pierwsza(l)=true then
if pierwsza(sumadec(l))=true then
if pierwsza(sumadec(dectobin(l)))=true then inc(d);
end;
writeln('w zakresie od 2 do 1000 jest: ',d,' liczb super"b"pierwszych');
readkey;
end.