Николаевна1564
?>

Сегодня на уроке информатики рассказывали про то, как получать все простые числа, не превосходящие заданного числа, с метода, который называется решето эратосфена. метод заключается в следующем: пусть мы хотим найти все простые числа от 2 до 100. выпишем числа от 2 до 100, затем возьмем первое число (2), его оставим, а все остальные делящиеся на 2 числа вычеркнем. затем возьмем первое невычеркнутое число, отличное от 2, это 3. его оставим, а все остальные еще невычеркнутые и делящиеся на 3 вычеркнем. затем опять возьмем первое невычеркнутое число, отличное от 2 и 3, это 5, его оставим, а все остальные еще невычеркнутые и делящиеся на 5 вычеркнем. и так далее. в итоге останутся невычеркнутыми только простые числа. игорю этот метод понравился и он решил с его найти все простые числа, не превосходящие 954530. какое число он вычеркнет последним? считаем, что каждое число может быть вычеркнуто ровно один раз. то есть, если 30 вычеркнули как делящееся на 2, то вычеркнуть его же как делящееся на 3 мы уже не можем.

Информатика

Ответы

orantus3

Program Resheto;

const n=954530;

var i,j,last,k:integer;

   b:array[1..n] of boolean;

begin

 for j:=1 to n do b[j]:=true; ///сначала все числа не вычеркнуты

 b[1]:=false; ///единицу вычеркиваем сразу

 i:=2;k:=0; ///k - количество найденных простых чисел

 while i*i<=n do

 begin

   for j:=i+1 to n do  

   begin

     if (b[j]) then ///если число уже вычеркнуто,то ничего не делаем

     begin

       if (j mod i=0) then begin last:=j; b[j]:=false; end; ///если число делится,то запоминаем его в last и вычеркиваем из решета

     end;  

   end;

   inc(i);

 end;

 for j:=2 to n do if b[j] then inc(k); ///считаем количество

 writeln; writeln('Последнее вычеркнутое: ',last);writeln('Найдено простых чисел: ',k);

 for j:=2 to n do if b[j] then write(j,' '); ///выводим все простые числа через пробел

end.


Сегодня на уроке информатики рассказывали про то, как получать все простые числа, не превосходящие з
Anna Artem

уточнять на каком языке программирования нужно написать задачки. Я же напишу на С++. Алгоритм везде будет один и тот же.

1 задача

int x1 = 0;

int x2 = 0;

int x3 = 0;

int x4 = 0;

int x5 = 0;

cin >> x1;

cin >> x2;

cin >> x3;

cin >> x4;

cin >> x5;

double sr = 0.0;

sr = (x1+x2+x3+x4+x5)/5;

Или же можно сделать по проще

int x = 0;

int sum = 0;

double sr = 0.0;

for(int i = 0; i<5; i++){

cin >> x;

sum = sum +x;

}

sr = sum/5;

2 Задача

int number = 5;

for(int i = 2; i<20; i=i+2){

number = number + i;

}

alukyanov

1) program exec;

var a:array[1..20] of integer;

var p,i:integer;

begin

randomize;

for i:=1 to 20 do begin

a[i]:=random(50);

writeln (a[i]);

if (a[i] mod 2<>0) then p:=p+1;

end;

if (p>0) then writeln ('Присутствуют нечётные элементы')

else writeln ('Не присутствуют нечётные элементы');

end.

2) program exec;

var a:array[1..20] of integer;

var p,i:integer;

begin

randomize;

for i:=1 to 20 do begin

a[i]:=random(50);

writeln (a[i]);

if (a[i] mod 2=0) then a[i]:=a[i]+1

else a[i]:=a[i]*2;

end;

writeln ('---'); // разделение двух массивов

for i:=1 to 20 do writeln (a[i]);

end.

Ответить на вопрос

Поделитесь своими знаниями, ответьте на вопрос:

Сегодня на уроке информатики рассказывали про то, как получать все простые числа, не превосходящие заданного числа, с метода, который называется решето эратосфена. метод заключается в следующем: пусть мы хотим найти все простые числа от 2 до 100. выпишем числа от 2 до 100, затем возьмем первое число (2), его оставим, а все остальные делящиеся на 2 числа вычеркнем. затем возьмем первое невычеркнутое число, отличное от 2, это 3. его оставим, а все остальные еще невычеркнутые и делящиеся на 3 вычеркнем. затем опять возьмем первое невычеркнутое число, отличное от 2 и 3, это 5, его оставим, а все остальные еще невычеркнутые и делящиеся на 5 вычеркнем. и так далее. в итоге останутся невычеркнутыми только простые числа. игорю этот метод понравился и он решил с его найти все простые числа, не превосходящие 954530. какое число он вычеркнет последним? считаем, что каждое число может быть вычеркнуто ровно один раз. то есть, если 30 вычеркнули как делящееся на 2, то вычеркнуть его же как делящееся на 3 мы уже не можем.
Ваше имя (никнейм)*
Email*
Комментарий*

Популярные вопросы в разделе

kamimoza
kokukhin
danielianruz
Египтян2004
gelena03
twisty20075004
st7307
НосовЖелиховская
Упростит выражения по информатике
maryshecka
koeman
rusplatok
ag-modul
Filintver
teya07