Jump to content
Sign in to follow this  
NemBen

Prímszám-e?

Recommended Posts

Üdv kedves Pirate-lakók!

 

Tegnap összedobtam egy igen egyszerű programot arra, hogy eldöntse egy adott számról hogy az prímszám-e vagy sem. Ez a legelső programom Pascalban úgyhogy nem feltétlenül szép, de mindenesetre működik :)

 

Az alapkód:

 

program prim;

 

uses CRT;

var p,i: longint;

 

begin

 

clrscr;

Writeln('Add meg a vizsgalni kivant szamot!'); Read(p);

i:=1;

repeat

i:=i+1;

until (p mod i=0);

if i=p then writeln(p,' primszam!') else writeln(p,' nem prim, mert ',i,' osztja!');

readkey;

 

end.

 

Persze ez csak az 1.0-s verzió, de már doldozok a javításán :)

 

Lényegében azt csinálja, hogy elkezdi nézni 2-től a számokat és amint talál olyan számot ami osztja a megadott p számot (ez ugye legfeljebb p), akkor kétféle dolgot ír ki:

-ha a talált osztó (i) megegyezik p-vel akkor a vizsgált szám prímszám,

-ha a talált osztó (i) kisebb mint p akkor a vizsgált szám nem prímszám.

 

Hasznos lehet, ha nagyobb számokról akajátok eldönteni hogy prímszám-e vagy sem :)

 

Beraktam mellékletnek a progi. Használjátok egészséggel!

prim.zip

Share this post


Link to post
Share on other sites

Ügyes progi,csak kár hogy minden eredményhirdetés után bezáródik.

Share this post


Link to post
Share on other sites

Már az 1.5nél tartok az már 'kicsit' többet tud :)

Pl a nemprímeket felbontja, nem záródik be hanem felajánlja az új vizsgálatot stb..

Csak még azt akarom megoldani, hogy ne úgy írja az osztókat hogy 2*2*2*2*2*3*3*4 hanem ehelyett azt írja, hogy 2^5*3^2*4

Share this post


Link to post
Share on other sites

A bezáródást azt lehet a legkönnyebben megoldani. A program eleján megkérded az emberkét, hogy hányszor akar tudakodni és az egész programod egy ciklusban fog lefutni.

-megkérded, beolvasod

-ciklus addig amig a beolvasott szám

ciklusban a Begin-End. között lévő rész :)

Share this post


Link to post
Share on other sites

Goto paranccsal oldottam meg a bezáródást :) Így gyakorlatilag akárhányszor végig lehet vinni.

 

Az 1.5 kódja:

 

program bonto;

uses CRT;

label kezdet, veg;

var p,i: longint;

var e:char;

begin

 

KEZDET:

 

clrscr;

Writeln('Add meg a vizsgalni kivant szamot!'); Read(p);

if p<=1 then writeln;

if p<=1 then writeln('Az 1-et es nala kisebb szamokat nem lehet felbontani. Nyomj ENTER-t es valassz masik szamot!');

if p<=1 then readkey;

if p<=1 then goto kezdet;

i:=1;

clrscr;

repeat

i:=i+1;

until (p mod i=0);

if i=p then writeln(p,' primszam!');

if i=p then goto veg

else i:=1;

write(p,'=');

repeat

repeat

i:=i+1;

until (p mod i=0);

write(i);

p:=(p div i);

if p>1 then write('*');

i:=1;

until p=1;

 

veg:

 

Writeln;

Writeln;

Writeln('Uj vizsgalathoz nyomj 1-et, befejezeshez barmely mas billentyut!');

e:=readkey;

if e='1' then goto KEZDET

else

end.

 

Eddig ugye ha 1-et vagy nála kisebb számot írtál be akkor a program gyakorlatilag lefagyott, ezért beépítettem egy kis védelmet ellene, továbbá most már bontja is a számokat :)

BONTO15.zip

Share this post


Link to post
Share on other sites

GOTO-t ne használj! Az a programnyelvek sötét oldala by sarki_roka :D aNagyon átláthatatlanná tesz 15 GOTO egy programot. (tapasztalat)

És meg lehet oldani iteratívan mindent GOTO nélkül.

Share this post


Link to post
Share on other sites

Csináljunk versenyt! :)

 

Az én programom pl. az első 10.000.000 természetes számból, 664.580 db. prímszámot talál 2.6 másodperc alatt!

Egyetlen hibája, hogy ehhez ~38 Mb-nyi memóriára van szüksége...

prim.zip

Share this post


Link to post
Share on other sites

Nemrég ugyanezt csináltuk infón.

Share this post


Link to post
Share on other sites

seekoly, csak kár hogy ez egy PASCAL topic... :lol:

Share this post


Link to post
Share on other sites

A barbár C-s progit rak be! :lol:

Látom az ékezeteket se sikerült megoldani, am még hasznos lehet... :)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Bejelentkezés

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×