Số Pronic: Tích của 2 số nguyên liên tiếp: n = x(x+1). Các số đầu: 0, 2, 6, 12, 20, 30, 42, 56, 72, 90, 110, 132, 156, 182...
Giải thuật
Duyệt i từ 0 đến √n. Nếu i×(i+1) == n → true.
Ví dụ minh họa
#include <iostream>
#include <cmath>
using namespace std;
bool isPronicNumber(int num) {
for (int i = 0; i <= (int)sqrt(num); i++)
if (num == i * (i + 1))
return true;
return false;
}
int main() {
cout << "Cac so Pronic <= 200: ";
for (int i = 0; i <= 200; i++)
if (isPronicNumber(i))
cout << i << " ";
}
Kết quả
Cac so Pronic <= 200: 0 2 6 12 20 30 42 56 72 90 110 132 156 182