Напишите программу, которая выводит все простые числа в диапазоне от K до N ( 2 ≤ K ≤ N ≤ 100000 ),...

Тематика Информатика
Уровень 10 - 11 классы
простые числа диапазон заканчиваются на 3 вывод паскаль алгоритм проверка простоты числа программа
0

Напишите программу, которая выводит все простые числа в диапазоне от K до N ( 2 ≤ K ≤ N ≤ 100000 ), оканчивающиеся на цифру 3.

Входные данные:Входная строка содержит два натуральных числа, разделённые пробелом, K и N ( 2 ≤ K ≤ N ≤ 100000 ).

Программа должна вывести все простые числа, оканчивающиеся на цифру 3, в диапазоне от K до N в одну строку, разделив их пробелами. Если таких чисел нет, нужно вывести число 0.

Например входные данные :15 22; выход:0. Программа в паскале ABC 1.8

avatar
задан 25 дней назад

3 Ответа

0

Для решения этой задачи необходимо написать программу на языке Pascal, которая будет находить все простые числа в заданном диапазоне и проверять, оканчиваются ли они на цифру 3. Если таких чисел нет, программа должна вывести 0.

Алгоритм решения задачи:

  1. Определение простого числа: Простое число — это число, большее 1, которое делится только на 1 и на себя. Для проверки, является ли число простым, можно использовать алгоритм перебора делителей до квадратного корня этого числа.

  2. Проверка последней цифры: Для проверки, заканчивается ли число на 3, достаточно проверить остаток от деления на 10.

  3. Перебор диапазона: Пройтись по всем числам от K до N, проверяя каждое число на простоту и на то, оканчивается ли оно на 3.

  4. Вывод результата: Если найдены подходящие числа, вывести их, разделяя пробелами. Если таких чисел нет, вывести 0.

Вот пример программы на языке Pascal:

program PrimeNumbersEndingIn3;

var
  K, N, i: Integer;
  isPrime: Boolean;
  result: String;

function IsPrime(num: Integer): Boolean;
var
  j: Integer;
begin
  if num < 2 then
    Exit(False);
  for j := 2 to Trunc(Sqrt(num)) do
    if num mod j = 0 then
      Exit(False);
  Exit(True);
end;

begin
  ReadLn(K, N);
  result := '';

  for i := K to N do
  begin
    if (i mod 10 = 3) and IsPrime(i) then
    begin
      if result  '' then
        result := result + ' ';
      result := result + IntToStr(i);
    end;
  end;

  if result = '' then
    WriteLn(0)
  else
    WriteLn(result);
end.

Пояснение к программе:

  • Функция IsPrime: Проверяет, является ли переданное число простым. Если число меньше 2, возвращает False. В противном случае проверяет делимость числа на все целые числа от 2 до квадратного корня из числа.

  • Основной цикл: Проходит по всем числам от K до N. Если число оканчивается на 3 (i mod 10 = 3) и является простым (IsPrime(i)), оно добавляется в строку result.

  • Вывод: После завершения цикла, если строка result осталась пустой, значит, подходящих чисел не найдено, и программа выводит 0. В противном случае выводит строку result.

Этот алгоритм эффективно решает поставленную задачу в заданных ограничениях.

avatar
ответил 25 дней назад
0

program PrimeNumbers; var K, N, i, j, flag: integer; begin flag := 0; readln(K, N);

for i := K to N do begin

if (i > 1) then
begin
  flag := 1;
  for j := 2 to trunc(sqrt(i)) do
  begin
    if (i mod j = 0) then
    begin
      flag := 0;
      break;
    end;
  end;
  
  if (flag = 1) and (i mod 10 = 3) then
    write(i, ' ');
end;

end;

if (flag = 0) then

write('0');

end.

avatar
ответил 24 дня назад
0

program PrimeNumbersEndingIn3;

var K, N, i, j, flag: integer;

function IsPrime(num: integer): boolean; var k: integer; begin IsPrime := true; for k := 2 to trunc(sqrt(num)) do begin

if num mod k = 0 then
begin
  IsPrime := false;
  break;
end;

end; end;

begin readln(K, N);

flag := 0;

for i := K to N do begin

if (i mod 10 = 3) and (IsPrime(i)) then
begin
  if flag = 1 then
    write(' ');
  write(i);
  flag := 1;
end;

end;

if flag = 0 then

write('0');

end.

{ Пример входных данных: 15 22 Пример выходных данных: 0 }

avatar
ответил 24 дня назад

Ваш ответ

Вопросы по теме