- 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


lúc 07:54 23 tháng 4, 2012
Unknown 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


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

hay khung khiep


lúc 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


lúc 14:42 13 tháng 12, 2012
Unknown nói...
Nhận xét này đã bị tác giả xóa.
Khoa Pham 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


lúc 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ì?


lúc 19:51 26 tháng 6, 2013
Unknown nói...

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


lúc 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.


lúc 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.


lúc 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


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

dai hon cach cua mk


lúc 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


lúc 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


lúc 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


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

Day anh day vao web: lauxanh.org xong ngay


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

hay đâý


lúc 19:35 7 tháng 10, 2014
Unknown 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


lúc 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ả


lúc 20:48 31 tháng 3, 2015
Nặc danh nói...

troi ui cam on AD nhieu


lúc 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.


lúc 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


lúc 00:08 31 tháng 3, 2017
Unknown nói...

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


lúc 20:34 27 tháng 4, 2017
Unknown nói...

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


lúc 16:21 20 tháng 5, 2017
Unknown 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''


lúc 20:38 2 tháng 12, 2017
Unknown nói...

cau lenhh long khong co "begin"va "end;"


lúc 23:42 17 tháng 1, 2018
Nặc danh nói...

Có đấy anh cho 2 in ra màn hình vì nó là số ng tố sẵn rồi bắt đầu cho i chạy từ 3 ts n-1 xét i có phải là thừa số ng tố ko rồi in ra. Xét chắc anh bik rồi ha


lúc 07:17 16 tháng 3, 2018
Nặc danh nói...

con gà


lúc 14:21 16 tháng 3, 2018
Nặc danh nói...

ai giúp minh làm duwosi dạng ct con với dữ liệu số lớn


lúc 09:33 6 tháng 8, 2018
Unknown nói...

cho mik hỏi i của bạn ai có thể chứng minh nó là số nguyên tố


lúc 19:39 12 tháng 10, 2019
Unknown nói...

Đơn giản là viết ra dấu nhân thôi bạn


lúc 15:15 30 tháng 10, 2019
Nặc danh nói...

Như lồn vạy cũng up


lúc 08:42 13 tháng 12, 2020
Unknown nói...

rồi viết luôn hàm đi rồi tính cho nó dễ


lúc 08:57 14 tháng 3, 2022

Đă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.