30/09/2018, 17:09

Hỏi về thuật toán phân tích một số ra thừa số nguyên tố

Em đang học Pascal. Đang làm bài về phân tích một số ra thừa số nguyên tố. Code của nó trong Pascal thế này

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;

em không hiểu tại sao lại thế. các bác giảng cho em được không ạ

Phan Ngọc Khiêm viết 19:18 ngày 30/09/2018

Theo mình hiểu thì đây là chia lần lượt cho các số bát đầu từ 2, nếu chia hết thì xuất ra và thêm dấu nhân phía sau, rồi lại lấy thương để tiếp tục, cò không chia hết thì bỏ qua

Đức Mạnh viết 19:25 ngày 30/09/2018

thế tại sao nó lại tránh được các số không phải số nguyên tố hả bác

Gió viết 19:18 ngày 30/09/2018

Bởi vì nếu nó chia hết cho hợp số. Tức là nó có thừa số nguyên tố nhỏ hơn, mà như vậy nó buộc phải bị phân tích từ trước rồi

Phan Ngọc Khiêm viết 19:15 ngày 30/09/2018

Số không phải là số nguyên tố phân tích thành các số nguyên tố bé hơn nó rồi, ví dụ 12 chia hết cho 4 nhưng sau khi chia 2 lần cho 2 thì không chia hết cho 4

rogp10 viết 19:24 ngày 30/09/2018

Cái này có thể sửa cận xuống sqrt(n).

Bài liên quan
0