ďťż

Ładny brzuch

Mam takie pytanie czy ktoś wie jak napisać program który będzie wyświetlał komunikat czy podana przez użytkownika liczba jest liczbą pierwszą czy nie?! Prosiłbym o kod źródłowy!!!



Czy zakres liczb jest jakoś ograniczony?

nie nie jest ograniczony

program Liczby_Pierwsze; {$APPTYPE CONSOLE} uses SysUtils; procedure Sprawdz(); var liczba, i, dzielniki: Integer; begin dzielniki:= 0; ReadLn(liczba); for i:=1 to liczba do begin if (liczba mod i=0) then dzielniki:=dzielniki+1; end; if (dzielniki=2) then WriteLn('Podana liczba jest liczba pierwsza! Yeah!') else WriteLn('Podana liczba nie jest liczba pierwsza;('); end; begin Sprawdz(); ReadLn; end.

taki program, na Integer wiec ograniczone liczby sa
//aha dla 1 wyswietla blednie ze nie jest wiec to popraw na ifie
Użytkownik limak_pascal_delphi edytował ten post 23 październik 2006, 21:44


var liczba,i:integer; begin //wprowadzenie liczby for i:=2 to (liczba-1) do if (liczba mod i=0) then begin //liczba nie jest pierwsza - rob co chcesz break; end; end.
oczywiscie to najprostszy algorytm, najmniej wydajny ale czytelny ;]
//limak_pascal_delphi mnie wyprzedzil, ale jego program jest nie do konca poprawny - przy 0 i 1 sie wysypie, bo te liczby nie sa "nie pierwsze" - ich nie mozna przyporzadkowac do obu tych zbiorow (pierwszych i nie pierwszych).
Użytkownik Deadeye edytował ten post 23 październik 2006, 21:47
Wielkie dzięki za pomoc. Ale jestem ciekaw jakby wyglądał kod w trybie nie konsolowym?!


Wielkie dzięki za pomoc. Ale jestem ciekaw jakby wyglądał kod w trybie nie konsolowym?! Normalnie :rolleyes:
Coś ode mnie:function pierwsza(c:cardinal):boolean; var i:integer; begin result:=true; for i:=2 to round(sqrt(c)) do if (c div i)*i=c then begin result:=false; break; end; end;
Użytkownik Cyrkiel edytował ten post 23 październik 2006, 22:27

program Liczby_Pierwsze; {$APPTYPE CONSOLE} uses SysUtils; procedure Sprawdz(); var liczba, i, dzielniki: Integer; begin dzielniki:= 0; ReadLn(liczba); for i:=1 to liczba do begin if (liczba mod i=0) then dzielniki:=dzielniki+1; end; if (dzielniki=2) then WriteLn('Podana liczba jest liczba pierwsza! Yeah!') else WriteLn('Podana liczba nie jest liczba pierwsza;('); end; begin Sprawdz(); ReadLn; end.

taki program, na Integer wiec ograniczone liczby sa
//aha dla 1 wyswietla blednie ze nie jest wiec to popraw na ifie

Jedynka nie jest liczbą pierwszą , więc program wyświetla poprawnie. Liczba pierwsza to taka która ma DWA dzielniki........

Najbardziej by mi zależało na kodzie źródłowym pod procedure Button1Click. Czy jest ktoś w stanie mi pomóc. Z góry dzięki :)
procedure TForm1.Button1Click(Sender: TObject); var begin end; end.

unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = class(TForm) Edit1: TEdit; Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; procedure Sprawdz(liczba: Integer); var Form1: TForm1; implementation procedure Sprawdz(liczba: Integer); var i, dzielniki: Integer; begin dzielniki:= 0; if (liczba=0) or (liczba=1) then ShowMessage('Liczby 0 i 1 nie są liczbami pierwszymi!') else begin for i:=1 to liczba do begin if (liczba mod i=0) then dzielniki:= dzielniki+1; end; if (dzielniki=2) then ShowMessage('Podana liczba jest liczbą pierwszą! PUNK is NOT DEAD') else ShowMessage('Podana liczba nie jest liczbą pierwszą!;('); end; end; {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin Sprawdz(StrToInt(Edit1.Text)); end; end.

i tak, na forme kładziesz Edit1 i Button1 i tyle

//aha, to co kładziesz do onclick Buttona1 masz na samym dole;
u góry tylko wklej tą procedure;
Użytkownik limak_pascal_delphi edytował ten post 24 październik 2006, 16:53
Wielkie dzięki!!! Naprawdę bardzo mi pomogłeś. Jeszcze tylko musze to zrozumieć jak to się wszystko dzieje tutaj dzieje. Jeszcze raz wielkie dzięki.

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •