Root /ArchiveAbout
()

Определить простоту числа онлайн

Определить простоту числа онлайн

На этой странице рассмотрим задачи while22 и while23 задачника Абрамяна: определение простоты числа и задача о нахождении наибольшего общего делителя соответственно. Ниже есть форма для проверки числа на простоту, для этого нужно ввести целое положительное число в жёлтое поле и нажать "проверить".

While22. Дано целое число N (> 1). Если оно является простым, то есть не имеет положительных делителей, кроме 1 и самого себя, то вывести true, иначе вывести false.

var
  N, i, m: integer;
  f: boolean; { Индикатор простоты числа: 
                True - протое, False - составное }

begin
  write('N = ');
  readln(N); { <-- вводим число для проверки на простоту }
  if N = 1 then f := false { <-- число 1 НЕ считается простым }
  else
  if N = 2 then f := true { <-- число 2 - простое }
  else
  { Если N + 1 нечетное, то есть N четное, то число N не может 
  быть простым (f = false): }
  if odd(N + 1) then f := false
  else begin { <-- далее проверяем нечетные числа }
    i := 3; { <-- минимальное нечетное простое число }
    f := true; { <-- по умолчанию число считаем простым }
    { Достаточно проверять все i, квадрат которых не больше N, 
    ибо в противном случае делители начнут повторяться. }
    while (i * i <= N) and f do 
      { Если i - ДЕЛИТЕЛЬ N, то число N составное и f = false. 
      В противном случае увеличиваем делитель i на 2: }
      if N mod i = 0 then f := false
      else i := i + 2
  end;
  writeln;
  { Выводим значение f. Если f в цикле не изменилась на, то мы 
  получим True, в противном случае - False: }
  writeln(' ', f);
  readln
end.

**type** integer;: Представляет 32-битовое целое число со знаком.Диапазон значений: -2 147 483 648 .. 2 147 483 647 **type** boolean;: Представляет логическое значение. **const** false = False;: Представляет логическое значение. **const** true = True;: Представляет логическое значение. **function** Odd(i: integer): boolean;: Возвращает True, если i нечетно **const** false = False;: Представляет логическое значение. **const** true = True;: Представляет логическое значение. A **mod** B - остаток при целочисленном делении А на В **const** false = False;: Представляет логическое значение. While23. Даны целые положительные числа A и B. Найти их наибольший общий делитель (НОД), используя алгоритм Евклида:

НОД(A, B) = НОД(B, A mod B), если B ≠ 0; НОД(A, 0) = A,

где «mod» обозначает операцию взятия остатка от деления.

Решение этой задачи смотрите на странице наибольший общий делитель.