Üdv, hogy tudnám megoldani ezt pascalban?
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.
Nem valami ilyesmi kellene : [link]
Szerintem ez a felbontás.
Itt a Pascal 'fordítása' :
program primfelbont;
var n, d : integer;
function prim(var n: integer) : boolean;
var i: integer;
begin
for i := 2 to n div 2 do
if n mod i = 0 then prim := true else prim := false;
end;
function kovprim(var n: integer) :integer;
begin
repeat
if (n mod 2) = 0 then Inc(n) else Inc(n, 2);
until not prim(n);
kovprim := n;
end;
begin
d:= 2;
Write('Kerem a szamot: ');
ReadLn(n);
while prim(n) do
begin
while true do
begin
if n mod d = 0 then
begin
Write(d,'*');
n := n div d;
break;
end;
d := kovprim(d);
end;
end;
Write(n);
ReadLn;
end.
Érdemes a C++ kódot is megnézni :) teljesen ugyanúgy írtam mint a C++ forrásban van.
Pont most lettem én is kész, még a tied nem néztem meg, de itt az én megoldásom:
Program primszamok;
Uses Crt;
Var i: Byte;
szam,muvelet,oszto: Longword;
prim: Boolean;
tomb:array[1..255] of Byte;
Procedure beker;
Begin
Writeln('Kerek egy szamot!');
Readln(szam);
End;
Procedure eldont;
Begin
i:=1; muvelet:=0; prim:=true;
Repeat
inc(i);
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('Felbontasban: ',szam,'=1*',szam);
If prim=false Then
Begin
i:=2;
Repeat
If szam mod i=0
Then
Begin
Write(i,'*');
szam:=szam div i
End
Else i:=i+1;
Until szam=1;
End;
End;
Begin
Clrscr;
Writeln('Primtenyezos felbontas!');
beker;
eldont;
felbont;
Readkey;
End.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!