*Cách 1: đếm ước.
for i:=1 to n do if n mod i=0 then inc(d);
if d=2 then writeln(n,' la so nguyen to')
else writeln(n,' khong la so nguyen to');
- Ở đây ta dùng phương pháp đếm ước, số nguyên tố là số chỉ có 2 ước là 1 và chính nó
- Mà trong quá trình lặp, nếu n chia lấy dư cho một số i=0 thì cộng thay đổi một lượng d
- Nếu d=2 thì in ra n,' la so nguyen to', ngược lại in ra n,' khong la so nguyen to'
- Bạn cũng có thể chạy i từ 2 -> n cũng được nhưng ĐK: d=1
- Vì: nếu không chạy từ 1 thì chỉ có 1 ước là chính số n đó
*Cách 2: dùng trunc(sqrt(n))
for i:=2 to trunc(sqrt(n)) do if n mod i=0 then scan:=false;
scan:=true;
if scan then writeln(n,' la so nguyen to')
else writeln(n,' khong la so nguyen to');
- Chạy i từ 2 đến gần căn bậc nhị của n, nếu căn n chia hết cho một số i=0 thì KTM
- Và lặp đến khi scan:=true