var i,n,m,sum,pr,k,j:longint;
begin
sum:=0; pr:=1;
write('m: '); readln(m);
write('n: '); readln(n);
i:=2;
repeat
if m mod i = 0 then
begin
sum:=sum+i;
m:=m div i;
i:=2;
end
else inc(i);
until m=1;
writeln('Sum_M:', sum);
for i:=2 to n div 2 do
if n mod i = 0 then
begin
k:=2;
for j:=2 to i div 2 do
if i mod j = 0 then inc(k);
if (k>2)and(i mod 3 = 0 ) then
pr:=pr*i;
end;
writeln('Proizv_N:', pr);
if sum>pr then writeln('Da, sum prost del M > proizv sost del N')
else
writeln('Net, sum prost del M < proizv sost del N');
end.
32
Объяснение:
Данная программа прибавляет к переменной s 128, а еще увеличивает переменную n в два раза, и все это до тех пор пока s меньше или равняется 1024. То есть, эти изменения переменных прекратятся, когда условие цикла не будет выполнено (а именно, когда s станет больше 1024). И после того, как это произойдет программа выведет значение переменной n (как раз то, что нам нужно узнать!)
Итак, запустим программу:
n = 1
s = 0
Условие цикла выполняется (s меньше или равняется 1024)? Да.
Выполняется цикл.
После цикла:
n = 2
s = 128
Условие цикла выполняется (s меньше или равняется 1024)? Да.
Выполняется цикл.
После цикла:
n = 4
s = 256
Условие цикла выполняется (s меньше или равняется 1024)? Да.
Выполняется цикл.
После цикла:
n = 8
s = 512
Условие цикла выполняется (s меньше или равняется 1024)? Да.
Выполняется цикл.
После цикла:
n = 16
s = 1024
Условие цикла выполняется (s меньше или равняется 1024)? Да.
Выполняется цикл.
После цикла:
n = 32
s = 2048
Условие цикла выполняется (s меньше или равняется 1024)? Нет (наконец-то!).
Цикл перестает выполнятся, и программа пишет значение n, которое равняется (смотрим выше) 32.
На экране напечатано 32, все живы, все счастливы!
ответ: 0; X; 0; X
1) 1 ИЛИ X И 0 = 0 (т.к второе утв. 0)
2) X И X И 1 = X (если X=0, то 0 и 0 и 1 = 0, если X=1, то 1 и 1 и 1 = 1)
3) 0 И X ИЛИ 0 = 0 (т.к 0 И X всегда 0)
4) 0 ИЛИ X И X = X (если X=0, то 0 или 0 и 0 = 0, если X=1, то 0 или 1 и 1 = 1)