Jump to content
PirateClub.hu

Prímszám-e?


NemBen
 Share

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

Link to comment
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

Link to comment
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 :)

Link to comment
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

Link to comment
Share on other sites

  • 4 weeks later...
  • 1 year later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Hozzászólás a témához...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Jelenleg olvassa   0 members

    • No registered users viewing this page.
×
×
  • Create New...