Минимально возможная сумма цифр числа при заданных условиях - 1, максимальная - 28 (число 1999). Таким образом, достаточно проверить, что сумма цифр очередного числа принадлежит множеству:
[2, 3, 5, 7, 11, 13, 17, 19, 23].
пишем простую прогу которая брутом проверяет суммы цифр числа на совпадение с группой простых чисел и считает совпадения: код на пайтоне
n=0
cont=[2,3,5,7,11,13,17,19,23]
for i in range (1,2001):
if i//1000+i%1000//100+i%1000%100//10+i%1000%100%10//1 in cont:
674
Объяснение:
Минимально возможная сумма цифр числа при заданных условиях - 1, максимальная - 28 (число 1999). Таким образом, достаточно проверить, что сумма цифр очередного числа принадлежит множеству:
[2, 3, 5, 7, 11, 13, 17, 19, 23].
пишем простую прогу которая брутом проверяет суммы цифр числа на совпадение с группой простых чисел и считает совпадения: код на пайтоне
n=0
cont=[2,3,5,7,11,13,17,19,23]
for i in range (1,2001):
if i//1000+i%1000//100+i%1000%100//10+i%1000%100%10//1 in cont:
n+=1
print(n)
Пайтон выводит ответ 674
function IsPrime(n: integer): boolean;
begin
if n < 4 then Result := True
else
begin
var found := (n mod 2 = 0);
var p := 3;
while (not found) and (sqr(p) <= n) do
begin
found := (n mod p = 0);
p += 2
end;
Result := not found
end
end;
function IsPalindrom(n: integer): boolean;
begin
Result := True;
if n > 10 then
begin
var (n1, i) := (n, -1);
var a := new integer[9];
while n1 > 0 do
begin
i += 1;
a[i] := n1 mod 10;
n1 := n1 div 10
end;
for var j := 0 to i div 2 do
begin
if a[j] <> a[i - j] then
begin
Result := False;
break
end
end
end
end;
begin
var (i, k) := (3, 1);
repeat
if IsPrime(i) and IsPalindrom(i) then k += 1;
i += 2
until k >= 101;
(i - 2).Println
end.
Результат: 94349