Upload
ernest-van-bakker
View
2
Download
0
Embed Size (px)
DESCRIPTION
Semiprimes numbers
Citation preview
unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Math;
type TForm1 = class(TForm) Edit2: TEdit; Button1: TButton; Memo1: TMemo; Edit1: TEdit; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);vara,b,N,i,j,k,m,Contador1,Contador2,Divisor,Cociente: Integer;
begina:= StrToInt(Edit1.Text);b:= StrToInt(Edit2.Text);
for N := a to b dobegin Contador1:= 0;
for i := 2 to N div 2 do if N mod i = 0 then Contador1:= Contador1 + 1;
if Contador1 <> 0 then// Memo1.Lines.Append('El numero '+IntToStr(N)+' no es semiprimo')// else // Si el numero no es primo entonces comenzamos una serie de instrucciones NUEVAS !!!//------------------------------------------------------------------------------ begin for j := 2 to N - 1 do if N mod j = 0 then begin Divisor:= j; Contador2:= 0; for k := 2 to Divisor div 2 do // Este ciclo corrobora que el primer divisor encontrado de N sea primo if Divisor mod k = 0 then Contador2:= Contador2 + 1;
if Contador2 = 0 then begin Cociente:= N div Divisor; Contador2:= 0; for m := 2 to Cociente div 2 do if Cociente mod m = 0 then Contador2:= Contador2 + 1; end; end;
if Contador2 = 0 then Memo1.Lines.Append(IntToStr(N))// else// Memo1.Lines.Append('El numero '+IntToStr(N)+' no es semiprimo'); end;end; // Fin del ciclo for N:= a to b do
end;
end.