. в нужно вывести все составные числа из промежутка [2; n]. код программы:
program lab3;
var i,n,j,s,l: integer;
m: real;
begin
readln (n);
for i: =2 to n do
begin
s: =trunc (sqrt (i));
for l: =2 to s do
begin
m: = i mod l;
if m=0 then
write (' ',i);
end;
end;
end.
но проблема - как только s становится больше 2, составные числа начинают несколько раз повторятся, т.к., например 12 делится и на 2 и на 3. вопрос: как мне сделать выход из цикла после первого успешного деления?
Мы не можем их никак отсортировать.
1. Значений/диапазона значений у нас нет.
2. Функции принимают разные аргументы, add и sub принимаю a,b, а mult принимает x. Даже примерно сказать не можем.
Можем разобраться на примере.
Пусть a = 5, b = 5, x = 5.
Тогда add вернет нам 10
mult вернёт нам 25
sub вернет нам 0
Получается, что mult всегда выдает нам максимальное значение, а sub минимальное? Не-а.
Другой пример.
a = - 5 , b = - 5, x = 0
Тогда add вернет нам -10
mult вернет нам 0
sub вернёт нам 0
Из этого примера делаем вывод, что mult дает значение такое же, как и sub.
Общий вывод: Всё зависит от переменных, так просто сравнить функции - нельзя.
ответ:
. в нужно вывести все составные числа из промежутка [2; n]. код программы:
program lab3;
var i,n,j,s,l: integer;
m: real;
begin
readln (n);
for i: =2 to n do
begin
s: =trunc (sqrt (i));
for l: =2 to s do
begin
m: = i mod l;
if m=0 then
write (' ',i);
end;
end;
end.
но проблема - как только s становится больше 2, составные числа начинают несколько раз повторятся, т.к., например 12 делится и на 2 и на 3. вопрос: как мне сделать выход из цикла после первого успешного деления?
var
i, n, j, s, l: integer;
m: real;
begin
readln(n);
for i : = 2 to n do
begin
s : = trunc(sqrt(i));
for l : = 2 to s do
begin
m : = i mod l;
if m = 0 then
begin
write(' ', i);
break;