Составьте на языке паскаль программу вычисления суммы всех натуральных чисел, не превышающих заданного натурального числа n. построить трассировочную таблицу
(1 + 0)*(0+0) + 1*0 (1 + 0) - истинна, т.к. дизъюнкция истинна если хотя-бы одна из переменных истинна (0 + 0) - ложна, т.к. обе перменные ложны (1 + 0)*(0+0) - ложна, т.к. первая скобка истинна, а вторая ложна, а в конъюнкции для истины обе скобки должны быть истинны. 1*0 - ложна, т.к. в конъюнкции обе переменные должны быть истинны.
Для удобства разделил скобками ((1 + 0)*(0+0)) + (1*0) - ложна, т.к. первая (большая) скобка ложна, вторая скобка (1*0) тоже ложна, между ними дизъюнкция, то есть хотя-бы одна из них должна быть истинна. Они обе ложны, значит результатом выражения
(1 + 0) - истинна, т.к. дизъюнкция истинна если хотя-бы одна из переменных истинна
(0 + 0) - ложна, т.к. обе перменные ложны
(1 + 0)*(0+0) - ложна, т.к. первая скобка истинна, а вторая ложна, а в конъюнкции для истины обе скобки должны быть истинны.
1*0 - ложна, т.к. в конъюнкции обе переменные должны быть истинны.
Для удобства разделил скобками
((1 + 0)*(0+0)) + (1*0) - ложна, т.к. первая (большая) скобка ложна, вторая скобка (1*0) тоже ложна, между ними дизъюнкция, то есть хотя-бы одна из них должна быть истинна. Они обе ложны, значит результатом выражения
(1 + 0)*(0+0) + 1*0
будет 0
PascalABC.NET
function IsPrime(n:integer): boolean; // простое?
begin
if n <= 1 then
begin
Result := False;
exit
end;
Result := True;
var (j, r) := (2, Round(Sqrt(n)));
while Result and (j <= r) do
if n mod j = 0 then
begin
Result := False;
exit
end
else
j += 1;
end;
function IsHyperPrime(n: integer): boolean; // гиперпростое?
begin
Result := False;
var k := 10;
while n > 10 do
begin
n := n div 10;
if not IsPrime(n) then exit
end;
Result := True
end;
begin
var (a, b) := ReadInteger2;
var found := False;
foreach var n in Range(a, b) do
if IsPrime(n) then // найдено простоe число
if IsHyperPrime(n) then
begin
found := True;
n.Print
end;
if not found then
Write(0)
end.