Kezdőoldal » Számítástechnika » Programozás » Üdv, hogy tudnám megoldani...

Üdv, hogy tudnám megoldani ezt pascalban?

Figyelt kérdés

Azt a feladatot kaptuk a suliban hogy egy számot bontsunk fel prímtényezőkre. Na most egy pici help kéne, mert nem sok kell ahhoz hogy kész legyen. Idáig így fest:

Program primszamok;

Uses Crt;

Var i: Byte;

szam,muvelet: Longint;

prim: Boolean;

Procedure beker;

Begin

Writeln('Kerek egy szamot!');

Readln(szam);

End;

Procedure eldont;

Begin

i:=1; muvelet:=0; prim:=true;

Repeat

i:=i+1;

muvelet:=muvelet+1;

Until (i=Round(sqrt(szam))) or (szam mod i=0);

If szam mod i=0 Then

Begin

Writeln('Nem primszam');

prim:=false;

End

Else Writeln('Primszam');

Writeln('Muveletek szama: ',muvelet);

End;

Procedure felbont;

Begin

If prim=true Then Writeln(szam,'=1*',szam);

If prim=false Then

Begin


End;

End;

Begin

Clrscr;

beker;

eldont;

felbont;

Readkey;

End.


2014. máj. 21. 17:57
1 2
 11/19 SimkoL ***** válasza:
Most néztem, hogy nem lett tökéletes az átírásom :(, Mindjárt nézem a tiedet.
2014. máj. 21. 19:30
Hasznos számodra ez a válasz?
 12/19 SimkoL ***** válasza:
Valami nem az igazi mert egyes számokra pl: 12345 201-es hibát dob.
2014. máj. 21. 19:59
Hasznos számodra ez a válasz?
 13/19 A kérdező kommentje:
Igen, most tesztelgettem én is, megnézem mi lehet a hiba.
2014. máj. 21. 20:01
 14/19 A kérdező kommentje:
Elvileg az hogy túl nagy értéket adtam egy változónak, de longword-ben van....
2014. máj. 21. 20:07
 15/19 SimkoL ***** válasza:
Megtaláltad a hibát ?
2014. máj. 21. 22:42
Hasznos számodra ez a válasz?
 16/19 anonim ***** válasza:

Ha sikerült megtalálni a hibát, hatékonyságot javítani pl szitával tudsz.

Vagy ha mégjobbat akarsz, akkor simán beleírod a prímeket egy tömbbe és azokkal vizsgálódsz...

2014. máj. 22. 08:24
Hasznos számodra ez a válasz?
 17/19 SimkoL ***** válasza:
Hiba: Az i változó nem byte hanem 'nagyobb', longword legyen.
2014. máj. 22. 17:39
Hasznos számodra ez a válasz?
 18/19 A kérdező kommentje:

Igen igen, csak tegnap este már nem írtam ide :)

Na tehát hatékonyságon hogyan javítsak? Tömbös megoldást hogyan kéne kivitelezni?

2014. máj. 22. 19:26
 19/19 SimkoL ***** válasza:

function prim_e(n : int64) : boolean;

var v, j: int64;

prime: boolean;

begin

v := Trunc(Sqrt(n)) + 1;

prime := (n mod 2) <> 0;

j := 3;

while(prime) and (j <= v) do

begin

prime := (n mod j) <> 0;

Inc(j, 2);

end;

prim_e := prime;

end;


Talán ez gyorsabb. 3-tól vizsgálja kettesével így a fele szám kiesik ha végig kell menni.

2014. máj. 22. 19:54
Hasznos számodra ez a válasz?
1 2

Kapcsolódó kérdések:




Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!