Nguồn đề bài: http://www.spoj.com/PTIT/problems/BCPRIME/
1. Đề bài Kiểm tra số nguyên tố
Một số được gọi là số nguyên tố nếu nó chỉ có 2 ước là 1 và chính nó. Số 0 và 1 không được coi là số nguyên tố.
Yêu cầu: Cho số n, hãy kiểm tra xem n có là số nguyên tố hay không.
Dữ liệu
Một dòng duy nhất chứa số n (0<=n<=10^9)
Kết quả
In ra “YES” nếu n là số nguyên tố, và “NO” trong trường hợp còn lại.
Ví dụ
INPUT | OUTPUT |
2 | YES |
INPUT | OUTPUT |
4 | NO |
Bài này không có gì đặc biệt. cứ áp dụng thuật toán kiểm tra số nguyên tố là được.
2. Code check số nguyên tố
Các bạn có thể dùng nhanh hàm này:
bool snt(int x) { if (x<2) return 0; for (int i=2; i<=sqrt(x); i++) if (x%i==0) return 0; return 1; }
a. code pascal
var N,i:longint; begin readln(n); if n<2 then begin writeln('NO'); exit; end; for i:=2 to trunc(sqrt(n)) do if n mod i = 0 then begin writeln('NO'); exit; end; writeln('YES'); end.
b. Code C++ Kiểu dùng hàm
#include <stdio.h> #include <math.h> using namespace std; bool snt(int x) { if (x<2) return 0; for (int i=2; i<=sqrt(x); i++) if (x%i==0) return 0; return 1; } int main() { int n; scanf("%d",&n); printf(snt(n) ? "YES" : "NO"); return 0; }
c. Code C++ viết trên chương trình chính
#include <stdio.h> #include <math.h> using namespace std; int main() { int n; //freopen("BCPRIME.inp","r",stdin); scanf("%d",&n); if (n<2) { printf("NO"); return 0; } int i; int m=sqrt(n); for (i=2; i<=m; i++) if (n%i==0) { printf("NO"); return 0; } printf("YES"); return 0; }