Phân tích một số ra thừa số nguyên tố dạng lũy thừa trong Pascal

72
Lập trình Pascal

Bài toán. Viết chương trình cho phép phân tích một số ra thừa số nguyên tố và ghi kết quả dưới dạng tích các lũy thừa. Ví dụ: 300 = 2^2.3.5^2

Thuật toán:

Dùng một mảng để lưu lũy thừa. Mảng này có giá trị các phần tử ban đầu đều bằng 0. Nếu n chia hết cho i thì tăng M[i] lên 1.

Khi in kiểm tra: Nếu M[i] >0 thì in i^M[i].

Program Phan_tich;
Var M: array[1..1000] of byte;
    i: byte;
    n: integer;
Begin
    For i:=1 to 1000 do M[i]:=0;
    Write('Nhap so n: ');Readln(n);
    i:=2;
    While n>1 do 
       if (n mod i = 0) then 
          begin M[i]:=M[i]+1; n:=n div i End
       else i:=i+1;
    For i:=1 to 1000 do 
       if M[i]>0 then 
          Begin 
             If M[i]>1 then 
                Write(i,'^',M[i],'.') 
             else Write(i,'.') End;
    Readln;
End.