Kiểm tra số nguyên tố trong Pascal
Đề: Nhập vào số tự nhiên N (với 1< N <= 10 mũ 9). Xuất ra màn hình N có phải số nguyên tố hay không.
Ý tưởng: Số nguyên tố là số chia cho 1 và chính nó. Giả sử số vừa nhập vào là N, ta cho i chạy từ 2 đến N-1, nếu N chia hết cho i trong bất cứ lần lặp nào thì có nghĩa là N không nguyên tố, nếu không chia hết cho bất cứ lần lặp nào là nguyên tố. Về nguyên tắc là như vậy, nhưng người ta đã chứng minh được rằng chỉ cần xét từ 2 đến phần nguyên căn bậc 2 của N. Như thế thuật toán sẽ tối ưu hơn.
Ý tưởng: Số nguyên tố là số chia cho 1 và chính nó. Giả sử số vừa nhập vào là N, ta cho i chạy từ 2 đến N-1, nếu N chia hết cho i trong bất cứ lần lặp nào thì có nghĩa là N không nguyên tố, nếu không chia hết cho bất cứ lần lặp nào là nguyên tố. Về nguyên tắc là như vậy, nhưng người ta đã chứng minh được rằng chỉ cần xét từ 2 đến phần nguyên căn bậc 2 của N. Như thế thuật toán sẽ tối ưu hơn.
Chương trình
Program kiem_tra_nguyen_to;
Uses crt;
Var N,i:int64; ok:boolean;
Begin
Clrscr;
ok:=true;
write('nhap vao so can kiem tra tinh nguyen to: '); readln(n);
if n<=1 then ok:=false;
i:=2;
while i<= trunc(sqrt(n)) do
Begin
if n mod i=0 then
begin
ok:=false;
break;
end
else
i:=i+1;
end;
if ok then write(N,'
la nguyen to.')
else write(N,' khong la nguyen to.');
readln;
end.
Mở rộng bài toán:
- Tìm số nguyên tố trong dãy số đã cho
- Tìm số nguyên tố trong đoạn từ a đến b với a<b được nhập từ bàn phím.
- Tìm số siêu nguyên tố
- Nguyên tố sinh đôi
- ............
Không có nhận xét nào