PDA

View Full Version : Nguyên tố



VSiAQ
12-09-2004, 12:49
Làm thế nào để phân tích một số ra thừa số nguyên tố bằng pascal vậy? Giúp mình với. Cảm ơn trước luôn.

Samir Duran
12-09-2004, 15:04
Sau đây là thủ tục phân tích một số ra thừa số nguyên tố ra dạng chuỗimà tớ làm hồi trước. Phần việc nữa cũng thú vị là bạn hãy gom các phần giống nhau thành lũy thừa xem sao :)

Function IsEN (Num: Integer): Boolean; {Check if Num is Element Number}
var t: Integer;
begin
IsEN := False;
for t :=2 to trunc(sqrt(Num)) do if Num mod t = 0 then exit;
If N >=2 then IsEN := True;
end;

Function BasicENum (N : Integer) :String;
var Enum : Integer;
i , L : Integer;
R : String;
begin
L := trunc(Sqrt(N)); {The limit of the greatest Element Number in N}
For i := 2 to L do
if IsEN(i) then While N mod i = 0 do
begin
N := N div i;
if not isEN(N) then R := R + i + '*' Else R := R + i;
end;
BasicENum := R;
end;

napoleonman
21-09-2004, 10:18
var n:integer;
function ngto(x:integer):boolean;
var k:integer;
begin
ngto:=false;
k:=1;
repeat
k:=k+1;
until x mod k=0;
if k=x then ngto:=true;
end;
begin
write('N=');readln(n);
if ngto(n) then writeln('N la so ngto') else writeln('N ko la so nguyen to');
readln;
end.
đây là 1 hàm tìm số nguyên tố hết sức dễ hiểu của mình,dụa trên co sở 1 so ngtố chỉ chia hết cho chính nó ,và 1.bạn cũng có thể áp dụng hàm này để tìm trong 1 dãy số chỉ với 1 vòng lặp (for)

FinderDev
25-09-2004, 15:23
Bạn ơi bài này là phân tích số ra thừa sô nguyên tố chứ có phải tìm số ngtố đâu?

etoile_solitaire
13-10-2004, 16:20
Pó tay, bác napoleonman lần sau đọc kĩ đề tí chứ ko thì có ngày ôm hận đó

Rikku
13-10-2004, 21:16
Theo mình nghĩ thì ta tạo 1 bảng số NT trước rồi bắt đầu mod div điên cuồng lên.

FinderDev
14-10-2004, 22:28
Cần gì phải vậy , điên cuồng nghe kinh quá . Theo tui cứ cho một vòng for từ i=1 đến n rồi nếu i là số ng tố và n mod i = 0 thì đếm xem n chia hết cho bao nhiêu lần số i đó , thế là xong thui mà .

anhkhoa2210
23-12-2004, 11:05
sao cac bac giai phuc tap qua vay.
Theo em thi bai giai nhu sau:
procedure phantich(x:longint);
var y,i:longint;
begin
i:=1;
while y<>0 do
begin
if x mod i=0 then x:=x div i
else inc(i);
end;

end;
Cac bac co the them mang kq vao de luu cac gia tri cua i trong truong hop x mod i=0,neu cac bac muon tinh so mu thi dung 1 mang ngto ,1 mang mu
.Co gi sai xin cac bac chi giao

real_time
10-01-2005, 22:44
Làm thế này có được ko?? lập một bảng các số nguyên tố từ 1-n rồi lấy n chia lần lượt cho các số nguyên tố đó??? mà cái bảng số nguyên tố này chắc cũng chẳng cần lập đến n làm gì ma chỉ cần lập đến n div 2 là quá đủ rồi.

Zero
11-01-2005, 08:06
sao cac bac giai phuc tap qua vay.
Theo em thi bai giai nhu sau:
procedure phantich(x:longint);
var y,i:longint;
begin
i:=1;
while y<>0 do
begin
if x mod i=0 then x:=x div i
else inc(i);
end;

end;
Cac bac co the them mang kq vao de luu cac gia tri cua i trong truong hop x mod i=0,neu cac bac muon tinh so mu thi dung 1 mang ngto ,1 mang mu
.Co gi sai xin cac bac chi giao

Mình nghĩ phải đổi thành while X >= I ^^(he thừa 20 ký tự ròi)

Rikku
13-01-2005, 22:34
Lâu lắm rồi mới thấy anh Zero :D.