Editorial for C Bài 4.D3: Tích 2 số nguyên liên tiếp
Remember to use this editorial only when stuck, and not to copy-paste code from it. Please be respectful to the problem author and editorialist.
Submitting an official solution before solving the problem yourself is a bannable offence.
Submitting an official solution before solving the problem yourself is a bannable offence.
Author:
Lời giải chi tiết
Ý tưởng: Khi duyệt từ 2 đến \(\sqrt{a}\), ta sẽ dùng 2 biến để lưu trữ 2 số nguyên tố liên tiếp, tìm được trong quá trình duyệt. Đến khi tích 2 biến đó > \(a\) thì in ra NO
. Còn nếu tích của chúng bằng \(a\) , in ra YES
.
Các bước giải:
- Bước 1: Khai báo và nhập vào số \(q\) thể hiện số truy vấn, chạy truy vấn.
- Bước 2: Khai báo và nhập vào số \(a\). Sau đó khai báo 2 biến \(x\) và \(y\) tương ứng là 2 biến lưu trữ 2 số nguyên tố liên tiếp, và gán giá trị ban đầu cho chúng bằng 0.
- Bước 3: Sử dụng vòng lặp để duyệt \(i\) từ 2 đến \(\sqrt{a}\). Với mỗi giá trị \(i\), kiểm tra xem \(i\) có là số nguyên tố hay không (cách kiểm tra số nguyên tố đã được hướng dẫn chi tiết trong bài ở b4c5). Nếu có thì gán \(x = y\) và \(y\) bằng số nguyên tố mới tìm được. Ta sẽ break vòng lặp khi \(x.y \geq a\).
- Bước 4: Sau khi thực hiện vòng lặp xong, Nếu \(x = 0\) hoặc \(x.y > a\) thì in ra
NO
. Ngược lại, nếu \(x.y = a\) thì in raYES
. - Bước 5: Xuống dòng để tiếp tục với các truy vấn sau đó.
Đăng ký khóa học: https://www.facebook.com/clblaptrinhfullhouse
SĐT liên hệ: 0372229686
Youtube: CLB Lập Trình Full House
Fullhouse dev đồng hành trên từng dòng code
Comments