Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Простое число

Delphi , Синтаксис , Математика



unit simple_;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Label1: TLabel;
    Edit1: TEdit;
    Label2: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var
  n: integer; // проверяемое число
  d: integer; // делитель
  r: integer; // остаток от деления n на d
begin
  n := StrToInt(Edit1.text);
  d := 2; // сначала будем делить на два
  repeat
    r := n mod d;
    if r <> 0 {// n не разделилось нацело на d} then
      d := d + 1;
  until r = 0; // повторять пока не найдено число на n делится без остатка
  label2.caption := Edit1.text;
  if d = n then
    label2.caption := label2.caption + ' - простое число.'
  else
    label2.caption := label2.caption + ' - обычное число.';
end;

end.

Программа на Delphi, которая проверяет, является ли целое число, введенное пользователем, простым или нет.

Вот шаг за шагом, что программа делает:

  1. Программа создает форму с текстовым полем ввода, кнопкой и двумя метками.
  2. Когда кнопка нажата, программа берет значение из текстового поля, конвертирует его в целое число и присваивает переменной n.
  3. Затем программа устанавливает d (делитель) в 2, что является наименьшим простым числом.
  4. Программа вступает в цикл, где она повторно делит n на d, пока не найдет остаток отличный от 0.
  5. Если n не делится без остатка на d, программа увеличивает d на 1 и повторяет процесс деления.
  6. Когда n будет найдено, что она делится на d, программа проверяет, равна ли d n. Если да, то это означает, что n является простым числом.
  7. Программа обновляет вторую метку на форме с результатом проверки простоты.

Вот несколько предложений по улучшению кода:

  1. Вместо конвертации текстового поля в целое число и затем проверки, является ли это число простым, можно использовать блок try-catch для прямого обхода ошибок конвертации.
  2. Можно добавить дополнительное обхождение ошибок, чтобы пользователь ввел корректное целочисленное значение.
  3. Цикл в процедуре Button1Click можно оптимизировать, проверяя делимость только до квадратного корня из n. Если n имеет делитель больше его квадратного корня, то она должна иметь делитель меньше его квадратного корня (по симметрии).
  4. Можно создать отдельную функцию или метод для проверки простоты числа, а не иметь это логическое в событии нажатия кнопки.
  5. Код использует оператор mod для нахождения остатка от деления n на d. Это можно заменить более эффективной функцией remainder(н, d) из модуля Math Delphi.

Вот пример реализации этих предложений:

uses Math;

function IsPrime(n: Integer): Boolean;
begin
  if n <= 1 then
    Result := False
  else
  begin
    var d := 2;
    while d * d <= n do
    begin
      if remainder(n, d) = 0 then
        Exit(False);
      Inc(d);
    end;
    Result := True;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  try
    var n := StrToInt(Edit1.Text);
    Label2.Caption := Format('Is %d a prime number? %b', [n, IsPrime(n)]);
  except
    on EConvertError do
      ShowMessage('Invalid input. Please enter a valid integer value.');
  end;
end;

В этом коде используется функция remainder из модуля Math Delphi для нахождения остатка от деления n на d, и только проверяется делимость до квадратного корня из n. Он также использует отдельную функцию IsPrime для проверки простоты числа, а не имеет это логическое в событии нажатия кнопки.

Статья описывает программу на языке Pascal, которая проверяет простоту числа, введенное пользователем в текстовое поле и отображает результат на лейбле.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Математика ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-12-22 20:14:06
2025-04-26 16:41:41/0.0035450458526611/0