Вывести все простые числа, оканчивающиеся на 1 - Pascal ABC

Узнай цену своей работы

Формулировка задачи:

Создать файл из 250 целых чисел, лежащих на отрезке [150,5000]U[6350,10000], используя генератор случайных чисел. -Вывести все данные на экран. -Вывести все простые числа, оканчивающиеся на 1. -Найти числа, отличающиеся от среднего арифметического более чем на 100. Помогите пожалуйста. Надо сдать что бы был допуск к экзамену.

Решение задачи: «Вывести все простые числа, оканчивающиеся на 1»

textual
Листинг программы
  1. var i, k, n: integer;
  2.     sr: real;
  3.     f: file of integer;
  4.     p, b: boolean;
  5. begin
  6.   randomize; {инициализация генератора псевдослучайных чисел}
  7.   assign(f, 'test.dat'); {связывание файловой переменной с файлом}
  8.   rewrite(f); {открыть (типизированный) файл для чтения-записи и стереть содержимое файла}
  9.   {-- Генерируем файл, заодно вычисляем среднее арифметическое --}
  10.   sr := 0;
  11.   for i := 1 to 250 do
  12.     begin
  13.       repeat
  14.         n := random(9851) + 150 {интервал чисел 150..10000}
  15.       until (5000 >= n) or (n <= 6350); {если 5000 < n > 6350, генерируем заново}
  16.       write(f, n); {пишем в файл}
  17.       sr := sr + n {находим сумму чисел}
  18.     end;
  19.   sr := sr / 250; {находим среднее арифметическое чисел}
  20.   {-- Вывести все данные на экран --}
  21.   reset(f); {установить указатель в начало файла}
  22.   writeln('Исходный файл:');
  23.   for i := 1 to 250 do
  24.     begin
  25.       read(f, n); {читаем из файла}
  26.       write(n:5) {выводим на экран}
  27.     end;
  28.   writeln;
  29.   {-- Вывести все простые числа, оканчивающиеся на 1 --}
  30.   reset(f); {установить указатель в начало файла}
  31.   p := false; {простые числа пока не найдены}
  32.   writeln('Простые числа, оканчивающиеся на 1:');
  33.   for i := 1 to 250 do
  34.     begin
  35.       read(f, n); {читаем из файла}
  36.       if n mod 10 = 1 {если число оканчивается на 1,}
  37.         then begin {то проверяем, простое ли оно}
  38.           for k := 3 to trunc(sqrt(n)) do {перебираем возможные делители}
  39.             begin
  40.               b := n mod k > 0; {если b = true, то не делится}
  41.               if not b then break {если на что-то разделилось, значит, число составное}
  42.             end;
  43.           if b {если простое,}
  44.             then begin {то}
  45.               write(n:5); {выводим число на экран}
  46.               p := true {помечаем, что простое число найдено}
  47.             end
  48.         end;
  49.     end;
  50.   if not p then write('Не найдены'); {если нужые числа не найдены, выводим сообщение}
  51.   writeln;
  52.   {-- Найти числа, отличающиеся от среднего арифметического более чем на 100 --}
  53.   reset(f); {установить указатель в начало файла}
  54.   p := false; {требуемые числа пока не найдены}
  55.   writeln('Среднее арифметическое чисел = ', sr:0:3);
  56.   writeln('Числа, отличающиеся от среднего арифметического более чем на 100:');
  57.   for i := 1 to 250 do
  58.     begin
  59.       read(f, n); {читаем из файла}
  60.       if abs(n - sr) > 100
  61.         then begin
  62.           write(n:5); {выводим число на экран}
  63.           p := true {помечаем, что требуемое число найдено}
  64.         end
  65.     end;
  66.   if not p then write('Не найдены'); {если нужые числа не найдены, выводим сообщение}
  67.   writeln;
  68.   close(f); {закрываем файл}
  69.   readln
  70. end.

Объяснение кода листинга программы

var i, k, n: integer; sr: real; f: file of integer; p, b: boolean; begin randomize; assign(f, 'test.dat'); rewrite(f); // Генерируем файл и вычисляем среднее арифметическое sr := 0; for i := 1 to 250 do begin repeat n := random(9851) + 150; until (5000 >= n) or (n <= 6350); write(f, n); sr := sr + n; end; sr := sr / 250; // Выводим все данные на экран reset(f); writeln('Исходный файл:'); for i := 1 to 250 do begin read(f, n); write(n:5); end; writeln; // Выводим все простые числа, оканчивающиеся на 1 reset(f); p := false; writeln('Простые числа, оканчивающиеся на 1:'); for i := 1 to 250 do begin read(f, n); if n mod 10 = 1 then begin for k := 3 to trunc(sqrt(n)) do begin b := n mod k > 0; if not b then break; end; if b then begin write(n:5); p := true; end; end; end; if not p then write('Не найдены'); writeln; // Находим числа, отличающиеся от среднего арифметического более чем на 100 reset(f); p := false; writeln('Среднее арифметическое чисел = ', sr:0:3); writeln('Числа, отличающиеся от среднего арифметического более чем на 100:'); for i := 1 to 250 do begin read(f, n); if abs(n — sr) > 100 then begin write(n:5); p := true; end; end; if not p then write('Не найдены'); writeln; close(f); readln; end.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 3.909 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы