Số xấu là số khi phân tích ra thừa số nguyên tố thì chỉ gồm các số 2, 3, hoặc 5. Giả sử 1 luôn luôn là số xấu.

Ví dụ: 6 và 8 là số xấu, 14 không phải là số xấu.

1) Cho một số tự nhiên 0 < N < 2^31. Viết chương trình kiểm tra N có phải là số xấu hay không?

2) Cho một số tự nhiên 0 < N <= 3000. Viết chương trình in ra số xấu thứ N.

Ví dụ: N = 10 thì in ra 12 bởi vì dãy 10 số xấu đầu tiên là: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12.

3) Số siêu xấu là số mà khi phân tích ra thừa số nguyên tố chỉ gồm các số nguyên tố được cho trước trong "danh sách số nguyên tố", gọi là primes. Giả sử 1 luôn luôn là số siêu xấu. Ví dụ: nếu primes = {2, 7, 13, 19} thì dãy số siêu xấu là: 1, 2, 4, 7, 8, 13, 14, 16, 19, 26, 28, 32.

Input:

- Danh sách số nguyên tố 'primes' được sắp xếp theo thứ tự tăng dần có tối đa 100 số, mỗi số 0 < primes < 1000.

- Một số tự nhiên 0 < N <= 10^6.

Output:

- Số siêu xấu thứ N.

Input cho 3 bài sẽ đảm bảo kết quả không vượt quá 2^31. Ví dụ: bài 3 sẽ không bao giờ có test case primes = {2} và n = 32.

Mình đã làm được bài 1. Riêng bài 2 và bài 3 mình không có cách làm nào tốt cả. Mong mọi người giúp đỡ.

Edit 1: Thầy mới thêm vào yêu cầu dữ liệu.