Số nguyên tố.

Một phần của tài liệu MỘT SỐ BIỆN PHÁP NÂNG CAO HIỆU QUẢ CÔNG TÁC BỒI DƯỠNG HỌC SINH GIỎI MÔN TIN HỌC BẰNG NGÔN NGỮ LẬP TRÌNH c++ (Trang 32 - 34)

Một số tự nhiên N (N>1) là số nguyên tố nếu N có đúng hai ước số là 1 và N. Ví dụ các số nguyên tố: 2, 3, 5, 7, 11, 13, 17, 19, 23, …

Tính chất đơn giản sau của số nguyên tố:

+ Trừ số 2 các số nguyên tố còn lại đều là số lẻ.

+ Trừ số 2, số 3 các số nguyên tố có dạng 6𝑘 ± 1 vì số có có dạng 6𝑘 ± 2 thì chia hết cho 2, số có dạng 6𝑘 ± 3thì chia hiêt cho 3.

Bài toán cơ bản:

Cho số tự nhiên N. Hãy cho biết N có phải là số nguyên tố hay không?

Dữ liệu vào: Đọc từ tệp SNT.Inp gồm một dòng duy nhất chứa số nguyên

N (1<=n<=109).

Dữ liệu ra: Ghi kết quả ra tệp SNT.Out số 1 nếu N là số nguyên tố, ngược

lại thì ghi số 0. Ví dụ

SNT.inp SNT.out

13 1

100 0

Phân tích bài tốn:

Để kiểm tra số ngun dương N(N>1) có là số ngun tố khơng, ta kiểm tra xem có tồn tại một số nguyên k (2<=i<=N-1) mà i là ước của N ( N chia hết i) thì N khơng phải là số ngun tố, ngược lại N là số nguyên tố.

Nếu N(N>1) không phải là số nguyên tố, ta ln có thể tách N =i1*i2 mà (2<= i1<=i2 <=N-1). Vì i1*i1<= i1*i2=N nên i1<=√𝑁. Do đó, việc kiểm tra với i từ 2 đến N- 1 là không cần thiết, mà chỉ cần kiểm tra i từ 2 đến √𝑁. Khi đó, ta có chương trình:

Dựa vào tính chất: Trừ số 2, số 3 các số nguyên tố đều có dạng 6𝑘 ± 1. Vậy ta chỉ cần kiểm tra xem N có chia hết cho số 2, số 3 và các số có dạng 6𝑘 ± 1 trong đoạn [5,√𝑁 ]. Chương trình thể hiện như sau:

Một phần của tài liệu MỘT SỐ BIỆN PHÁP NÂNG CAO HIỆU QUẢ CÔNG TÁC BỒI DƯỠNG HỌC SINH GIỎI MÔN TIN HỌC BẰNG NGÔN NGỮ LẬP TRÌNH c++ (Trang 32 - 34)