ответ:
. в нужно вывести все составные числа из промежутка [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;
На бумаге сорри не получится, но постараюсь досконально объяснить:
1) 379 в 10 системе счисления сначала переводим в 2 систему счисления: мы число 379 делим на 2 до того момента, когда выражение будет равно 0.
379 : 2 = 189 остаток 1
189 : 2 = 94 остаток 1
94 : 2 = 47 остаток 0
47 : 2 = 23 остаток 1
23 : 2 = 11 остаток 1
11 : 2 = 5 остаток 1
5 : 2 = 2 остаток 1
2 : 2 = 1 остаток 0
1 : 2 = 0 остаток 1
Теперь, мы обращаем наше внимание на остаток, оно и является ответом, только есть нюанс, мы должны писать числа с конца.
Получаем, что 379 в 10 сист.сч. = 101111011 в 2 системе счисления
Аналогично и с 8 системой счисления :
379 : 8 = 47 остаток 3
47 : 8 = 5 остаток 7
5 : 8 = 0 остаток 5
379 в 10 системе счисления = 573 в 8 системе счисления