- Ebook Giải thuật và lập trình Lê Minh Hoàng
- Các thuật toán sắp xếp trong Pascal

Phân tích một số ra thừa số nguyên tố



Ví dụ: Phân tích 12=2*2*3. Ý tưởng: Thuật toán phân tích một số ra thừa số nguyên tố tương tự như thuật toán kiểm tra số nguyên tố. Điểm khác ở đây là khi kiểm tra số nguyên tố ta phải lần lượt kiểm tra các số nhỏ hơn sqrt(n) (căn bậc hai của n) có phải là ước của n hay không, còn khi phân tích ta chỉ việc chia n cho các số nguyên bắt đầu từ số nguyên tố nhỏ nhất là 2. Khi không chia được nữa thì ta tăng số chia lên 1 đơn vị, quá trình phân tích kết thúc khi n bằng 1.

VAR i,n :INTEGER;
BEGIN
    Write ('Nhap n:');
    Readln(n);
    Write (n,'=');
    i:=2;
    REPEAT
        WHILE n MOD i <> 0 DO
            i:=i+1;
        Write(i);
        n:=n DIV i;
        IF n > 1 THEN
            write ('*');
    UNTIL n = 1;
    readln;
END.


haiyka.xtgem.com nói...

Ghe tham wap haiyka.xtgem.com co nhieu code hay va bo ich hon nua


07:54 23 tháng 4, 2012
dũng Mai Văn nói...

Viết chương trình nhập số nguyên n từ bàn phím (n < 10000), in ra màn hình bảng phân tích số n ra thừa số nguyên tố dưới dạng bảng phân tích và tích các thừa số nguyên tố.
Ví dụ: Với n = 100 thì in ra
100 | 2
50 | 2
25 | 5
5 | 5
1 |
và 100 = 2.2.5.5


16:23 6 tháng 10, 2012
Nặc danh nói...

hay khung khiep


15:22 23 tháng 11, 2012
Nặc danh nói...

dk nhỉ mà cũng không = mình hjhjhj phone để tích lũy kinh nghiem pascal 01868582012


14:42 13 tháng 12, 2012
hoàng nam nói...
Nhận xét này đã bị tác giả xóa.
Yama Moto nói...
Nhận xét này đã bị tác giả xóa.
Nặc danh nói...

Đúng thứ mình cần. Thank bạn
www.giupnhanh.com


11:31 19 tháng 5, 2013
Nặc danh nói...

Các bạn ơi giúp mình với ! bài phân tích ra thừa số nguyên tố , VD nhập 1234567891 mà chương trình nó ra kết quả chậm thì cách khắc phụ là gì?


19:51 26 tháng 6, 2013
Phú Huỳnh Quốc nói...

Cảm ơn bạn nhiều nhé !!!


11:04 13 tháng 10, 2013
Nặc danh nói...

Các bạn ơi giúp mình với ! bài phân tích ra thừa số nguyên tố , VD nhập 1234567891 mà chương trình nó ra kết quả chậm thì cách khắc phụ là gì?
Them doan kiem tra
uses crt;
VAR i,n,b :Longint;
BEGIN
clrscr;
Write ('Nhap n:');
Readln(n);
b:=n;
Writeln (n,' phan tich ra thua so nguyen to');
i:=2;
REPEAT
WHILE (n MOD i <> 0) and (i 1 THEN
write ('*');}
UNTIL (n = 1) or (i>sqrt(b));
if i>sqrt(b) then
begin
Writeln(n:5,'|',n);
Writeln(1,'|',1)
end else
Writeln(n:5,'|',1); {1234567891}
readln;
END.


16:41 13 tháng 11, 2013
Nặc danh nói...

uses crt;
VAR i,n,b :Longint;
BEGIN
clrscr;
Write ('Nhap n:');
Readln(n);
b:=n;
Writeln (n,' phan tich ra thua so nguyen to');
i:=2;
REPEAT
WHILE (n MOD i <> 0) and (isqrt(b));
if i>sqrt(b) then
begin
Writeln(n:5,'|',n);
Writeln(1,'|',1)
end else
Writeln(n:5,'|',1); {1234567891}
readln;
END.


16:43 13 tháng 11, 2013
Nặc danh nói...

Post len bi loi ma nhung them doan kiem tra i< can cua b=n vao la xu li duoc voi cac so nguyen to (thoi gian chay nhanh hon) vi voi so nguyen to 1234567891 thay vi tang i den 123456789 thi i chi chay den can cua 123456789


16:45 13 tháng 11, 2013
Nặc danh nói...

dai hon cach cua mk


16:31 2 tháng 12, 2013
cua con iu may tinh nói...

cach giai cua cac pan rat hay nhung dai hon cua mik


08:29 8 tháng 1, 2014
Nặc danh nói...

cùi rách cách của tui dài gấp 3


09:45 28 tháng 5, 2014
Nặc danh nói...

cao thủ nào hướng dẫn cách làm bài này vs chương trình con xem nào


09:21 26 tháng 9, 2014
Nặc danh nói...

Day anh day vao web: lauxanh.org xong ngay


09:24 26 tháng 9, 2014
Nặc danh nói...

hay đâý


19:35 7 tháng 10, 2014
Kien Huy Luong nói...

Bạn ơi, bạn có thể giải thích chi tiét c trình trên cho mình đc ko. Thanks bạn nhìu


17:29 24 tháng 3, 2015
Vũ Anh Hào nói...

Với n < 10^9 thì cách này không có hiệu quả


20:48 31 tháng 3, 2015
Hue Vu nói...

hay wa đi ak!!!


08:30 8 tháng 2, 2017
Nặc danh nói...

troi ui cam on AD nhieu


20:34 14 tháng 3, 2017
Nặc danh nói...

Các em nên dùng đệ quy bài này. Ý tưởng là ta sẽ gọi 1 hàm như Phantich(N). Trong hàm đó ta tìm số nhỏ nhất mà N chia hết(tạm gọi là x) xong ghi hoặc lưu số x đó ra. Rồi gọi tiếp đệ quy Phantich(N div x). Còn nếu số nhập vào vượt kiểu dữ liệu cho phép thì các em phải có kỹ thuật nhân chia số cực lớn mới làm được. Lâu lắm rồi anh không code nên chỉ cho các em ý tưởng thôi. chúc các em học tốt.


03:23 19 tháng 3, 2017
Nặc danh nói...

cho mk hỏi làm sao để in ra các thừa số nguyên tố nhỏ hơn n? mk thử nhiều cách r mak nó ko ra


00:08 31 tháng 3, 2017
Mai Thảo nói...

ai thông não e vs pần write('*') la j v ạ


20:34 27 tháng 4, 2017
MRX King nói...

cái code đó có 1 lỗi nhỏ. Ae sửa lại là if n >= i then write('*');


16:21 20 tháng 5, 2017
Huyền Huyền nói...
Nhận xét này đã bị tác giả xóa.
Nặc danh nói...

Code sao chạy không được vậy, sai ở phần'' if...then''


20:38 2 tháng 12, 2017

Đăng nhận xét

Thành viên Blog

Tổng số lượt xem trang

Translate

Return to top of page Copyright © 2012 | Theme by Hack Tutors. Cung cấp bởi Blogger.
Các code pascal trong blog được sưu tầm, lựa chọn sao cho tối ưu nhất. Cảm ơn các tác giả đã viết thuật toán.