Идем от обратного. Перепишем алгоритм с последней цифры до первой: 21221 и командам присвоим обратные действия, то есть команда 1) станет "отними 1", а команда 2) "раздели на 2"
Проверим каждое число получившимся алгоритмом, если на выходе получается натуральное число, считаем, что алгоритм для этого числа допустим.
Например, число 42.
42/2 = 21
21-1 = 20
20/2 = 10
10/2 = 5
5-1 = 4
4 - натуральное число, следовательно для числа 42 алгоритм допустим.
Пример недопустимого алгоритма на примере числа 20:
20/2 = 10
10-1 = 9
9/2 = 4,5 - недопустимо, так как это число не может получиться при умножении целого натурального числа на 2
// PascalABC.NET 3.2, сборка 1381 от 04.02.2017 // Внимание! Если программа не работает, обновите версию!
begin var s:set of integer:=[]; for var i:=1 to 254 do begin var flag:=True; var j:=2; var r:=round(sqrt(i)); while flag and (j<=r) do if i mod j = 0 then flag:=false else j+=1; if flag then if i mod 4=3 then s+=[i] end; foreach var x in s do Print(x); end.
Допустимые входные данные: 42, 26, 50, 82
Недопустимые входные данные: 20, 28, 40, 101
Объяснение:
Идем от обратного. Перепишем алгоритм с последней цифры до первой: 21221 и командам присвоим обратные действия, то есть команда 1) станет "отними 1", а команда 2) "раздели на 2"
Проверим каждое число получившимся алгоритмом, если на выходе получается натуральное число, считаем, что алгоритм для этого числа допустим.
Например, число 42.
42/2 = 21
21-1 = 20
20/2 = 10
10/2 = 5
5-1 = 4
4 - натуральное число, следовательно для числа 42 алгоритм допустим.
Пример недопустимого алгоритма на примере числа 20:
20/2 = 10
10-1 = 9
9/2 = 4,5 - недопустимо, так как это число не может получиться при умножении целого натурального числа на 2
// Внимание! Если программа не работает, обновите версию!
begin
var s:set of integer:=[];
for var i:=1 to 254 do begin
var flag:=True;
var j:=2;
var r:=round(sqrt(i));
while flag and (j<=r) do
if i mod j = 0 then flag:=false
else j+=1;
if flag then
if i mod 4=3 then s+=[i]
end;
foreach var x in s do Print(x);
end.
Результат
83 79 167 163 251 71 67 151 239 59 139 227 47 223 43 131 127 211 31 23 199 19 107 103 191 11 7 3 179