Лидеры рейтинга

ID: 259041

Алексеев Владимир Николаевич

Мастер-Эксперт

1058

Россия, пос. Теплоозёрск, ЕАО


ID: 226425

Konstantin Shvetski

Модератор

314

Россия, Северодвинск


ID: 401284

Михаил Александров

Советник

278

Россия, Санкт-Петербург


ID: 137394

Megaloman

Мастер-Эксперт

177

Беларусь, Гомель


ID: 400669

epimkin

Профессионал

105


ID: 404002

sglisitsyn

6-й класс

42


ID: 242862

Hunter7007

Мастер-Эксперт

31

Россия, Омск


8.10.3

30.10.2021

JS: 2.10.3
CSS: 4.6.0
jQuery: 3.6.0
DataForLocalStorage: 2021-12-04 22:46:17-standard


Создание программ на языках Pascal, Delphi и Lazarus.

Администратор раздела: Зенченко Константин Николаевич (Старший модератор)

Консультация онлайн # 201415

Раздел:  Pascal / Delphi / Lazarus
Автор вопроса: Jin (Посетитель)
Дата: 20.09.2021, 21:34 Консультация закрыта
Поступило ответов: 1

Здравствуйте! Пожалуйста, нужна помощь в решении задачи на Lazarus:
Найти, сколько простых чисел из ряда N=2^х-1, имеется для х=1,2.

Доброе время суток!

Смотрите приложение:
Код [Pascal]
unit Unit1;
{$mode objfpc}{$H+}
interface
uses
  Classes, SysUtils, Forms, Controls, Graphics, Dialogs, Grids, StdCtrls;
type
  { TForm1 }
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    StringGrid1: TStringGrid;
    procedure Button1Click(Sender: TObject);
    procedure Edit1Click(Sender: TObject);
    procedure Edit1KeyPress(Sender: TObject; var Key: Char);
    procedure Edit2Click(Sender: TObject);
    procedure Edit2KeyPress(Sender: TObject; var Key: Char);
    procedure FormCreate(Sender: TObject);
  private
  public
  end;
var
  Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
  procedure TForm1.FormCreate(Sender: TObject);
    begin
      Form1.StringGrid1.Cells[0,0]:='X'; 
      Form1.StringGrid1.Cells[1,0]:='2^X-1';
      Form1.StringGrid1.Cells[2,0]:='Status';
      Form1.StringGrid1.RowCount:=2;
    end;
  procedure TForm1.Button1Click(Sender: TObject);
    var
      a,b,c:longint;
    function prime(a:longint):boolean;
      var
        b:integer;
      begin
        b:=a div 2;
        while (b>1)and((a mod b)>0)do
          dec(b);
        prime:=b=1;
      end;
    begin
      if TryStrToInt(Form1.Edit1.Text,a)and TryStrToInt(Form1.Edit2.Text,b)then
        if(a>0)and(b>0)then
        begin
          if a>b then
            begin
              c:=a;
              a:=b;
              b:=c;
            end;
          Form1.StringGrid1.Cells[0,1]:=IntToStr(a);
          c:=1;
          while a>0do
            begin
              c:=c*2;
              dec(a);
              dec(b);
            end;
          Form1.StringGrid1.Cells[1,Form1.StringGrid1.RowCount-1]:=IntToStr(c-1);
          if prime(c-1) then Form1.StringGrid1.Cells[2,Form1.StringGrid1.RowCount-1]:='True'
            else Form1.StringGrid1.Cells[2,Form1.StringGrid1.RowCount-1]:='False';
          for a:=1 to b do
            begin
              Form1.StringGrid1.RowCount:=Form1.StringGrid1.RowCount+1;
              Form1.StringGrid1.Cells[0,Form1.StringGrid1.RowCount-1]:=IntToStr(StrToInt(Form1.StringGrid1.Cells[0,Form1.StringGrid1.RowCount-2])+1);
              c:=c*2;
              Form1.StringGrid1.Cells[1,Form1.StringGrid1.RowCount-1]:=IntToStr(c-1);
              if prime(c-1) then Form1.StringGrid1.Cells[2,Form1.StringGrid1.RowCount-1]:='True'
                else Form1.StringGrid1.Cells[2,Form1.StringGrid1.RowCount-1]:='False';
            end;
        end
        else
        ShowMessage('Please, enter correct data');
    end;
  procedure TForm1.Edit1Click(Sender: TObject);
    begin
      Form1.Edit1.Text:='';
    end;
  procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin
      if not (Key in ['0'..'9', #13, #8]) then Key := #0;
    end;
  procedure TForm1.Edit2Click(Sender: TObject);
    begin
      Form1.Edit2.Text:='';
    end;  
  procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);
    begin
      if not (Key in ['0'..'9', #13, #8]) then Key := #0;
    end;
end.


Удачи!

Зенченко Константин Николаевич

Старший модератор
28.09.2021, 16:00
Мини-форум консультации # 201415

q_id

Зенченко Константин Николаевич

Старший модератор

ID: 31795

1

= общий =    21.09.2021, 13:52
Jin:

Цитата: Jin

Найти, сколько простых чисел из ряда N=2^х-1, имеется для х=1,2.


Уточните свое задание.

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

q_id

Анатолий

Посетитель

ID: 400728

2

= общий =    03.10.2021, 08:53
Зенченко Константин Николаевич:

Уточните свое задание

не уточнил?

Найти, сколько простых чисел из ряда N=2^х-1, имеется для х=1,2.

а сколько всё- таки получилось простых у этого ряда и какие?

q_id

Зенченко Константин Николаевич

Старший модератор

ID: 31795

3

= общий =    03.10.2021, 15:58

не уточнил?


Прикинулся страусом.

а сколько всё- таки получилось простых у этого ряда и какие?



Как-то так

Цитата: Jin

х=1,2.


На этом интервале: первый - нет, второй - да(считается на пальцах).
Поэтому и уточнял

=====
Мне безразлично, что Вы думаете о обо мне, но я рад за Вас - Вы начали думать.
smile

Возможность оставлять сообщения в мини-форумах консультаций доступна только после входа в систему.
Воспользуйтесь кнопкой входа вверху страницы, если Вы зарегистрированы или пройдите простую процедуру регистрации на Портале.

Лучшие эксперты раздела

Зенченко Константин Николаевич

Старший модератор

Рейтинг: 244

Лысков Игорь Витальевич

Мастер-Эксперт

Рейтинг: 43

Gluck

9-й класс

Рейтинг: 42

Вадим Исаев ака sir Henry

Мастер-Эксперт

Рейтинг: 2

Асмик Гаряка

Советник

Рейтинг: 0

Орловский Дмитрий

Мастер-Эксперт

Рейтинг: 0