Kiểm tra một số nguyên là số nguyên tố

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Xây dựng chương trình kiểm tra một số nguyên N là nguyên tố hay không, nếu là số nguyên tố thì trả về YES còn không phải trả về NO


Ràng buộc: ~0 \leq N \leq 10^{18}~


Input 01:
2
Output 01:
YES
Input 02:
1
Output 02:
NO
Input 03:
10
Output 03:
NO
Input 04:
1000000007
Output 04:
YES

Kiểm tra số hoàn hảo

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Xây dựng chương trình kiểm tra một số nguyên N > 0 có phải là số hoàn hảo. Nếu đúng thì in ra YES, còn không thì in ra NO

Số hoàn hảo là số mà tổng tất cả các ước của nó (không tính chính nó) sẽ bằng chính nó


Ràng buộc: ~0 \leq N \leq 10^6~


Input 01:
28
Output 01:
YES

28 có các ước là 1, 2, 4, 7, 14 và tổng các số này lại bằng chính 28 nên 28 là số hoàn hảo

Input 02:
30
Output 02:
NO

Kiểm Tra Số Hoàn Hảo (Phiên bản Hard)

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Một số nguyên dương N được gọi là số hoàn hảo nếu tổng các ước dương thực sự của nó (không kể chính nó) bằng chính nó.

Ví dụ: 6 = 1 + 2 + 3.

Với N nhỏ, ta có thể duyệt ước. Nhưng với N lớn, hãy dùng định lý Euclid-Euler.

Cho số nguyên dương N. Hãy kiểm tra xem N có phải là số hoàn hảo hay không.


Input:

  • Dòng đầu tiên chứa số nguyên T (số lượng test case, T <= 100).

  • T dòng tiếp theo, mỗi dòng chứa một số nguyên N.


Giới hạn:

  • 1 <= N <= 10^18 (Lưu ý: N rất lớn, không thể vòng lặp đếm ước).

Output:

  • Với mỗi test case, in ra "YES" nếu N là số hoàn hảo, ngược lại in "NO".

Ví dụ

Input:
3
6
28
100
Output:
YES
YES
NO

Gợi ý thuật toán:

Thay vì tính tổng ước, hãy kiểm tra xem N có khớp với dạng 2^(p-1) * (2^p - 1) hay không.

B1: Chia N cho 2 liên tục để tìm 2^(p-1). Từ đó suy ra p.

B2: Kiểm tra xem phần còn lại có bằng (2^p - 1) không.

B3: Kiểm tra xem (2^p - 1) có phải là số nguyên tố không


Số nguyên tố đầu tiên trong mảng

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Nhập vào một mảng các số nguyên A có N phần tử, tìm phần tử là số nguyên tố đầu tiên trong mảng. Nếu có thì in ra vị trí của nó, nếu không có thì in ra NONE


Ràng buộc: ~0 < N \leq 10^6~; ~0 \leq A[i] \leq 10^6~


Dữ liệu vào gồm 2 dòng, dòng thứ nhất là số lượng N, dòng thứ 2 là N phần tử trong mảng A.

In ra vị trí của số nguyên tố đầu tiên trong mảng

Input 01:
5
5 1 4 6 3
Output 01:
1

Số nguyên tố đầu tiên trong mảng ở vị trí 1

Input 02:
6
1 4 1 4 1 8
Output 02:
NONE

Tính trung bình các số nguyên tố trong mảng

Nộp bài
Time limit: 1.0 / Memory limit: 256M

Point: 1

Cho mảng A có N phần tử là các số nguyên. Hãy tính trung bình cộng các số nguyên tố trong mảng, làm tròn lấy 2 chữ số sau phần thập phân


Ràng buộc: ~1<=N<=1000; 0<=A[i]<=10^3~


Input:
5
1 2 3 4 5
Output:
3.33