7,9,13,21,37,..... и т.д
Вот код
uses
crt;
var
n,i:byte;
begin
clrscr;
i:=0;
for n:=7 to 100 do
begin
i:=i+2;
n:=n+i;
if n<100 then
write('n=', n);
break;
end;
readln;
end.
Во-первых, убери Break. Зачем ты его поставил вообще? Ессно отработается только один проход..
Во-вторых - никогда не меняй параметр цикла в самом цикле. Табу.
А в третьих - шаг в последовательности - 2n, гораздо проще сдвигать переменную влево на 1 бит на каждой итерации, чем использовать вот такие навороты для ее вычисления...
А почему глюки начинаются когда изменешь 100 на 150 до максимального типа byte 255
Потому что:
repeat, а 5 - меньше чем 150... И опять все заново...
writeln ('n=',n); { <--- Когда здесь 133 }
i := 2*i; { <--- Тут i становится равным 128 }
n := n + i; { <--- N перескакивает через 256, и становится равно (133+128) mod 256 = 5 }
until n > 150;