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.

Author: buitrunghieu

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 ra YES.
  • 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

There are no comments at the moment.

Zalo