Trong hướng dẫn này, ta sẽ thảo luận chương trình để tìm số lượng ước số chính phương (perfect divisor) của một số.
Cho một số. Nhiệm vụ là đếm tất cả ước số của số đó là số chính phương.
Ví dụ
#include <bits/stdc++.h>
using namespace std;
bool if_psquare(int n) {
int sq = (int)sqrt(n);
return n == sq * sq;
}
int count_pdivisors(int n) {
int count = 0;
for(int i = 1; i * i <= n; ++i) {
if(n % i == 0) {
if(if_psquare(i)) ++count;
if(n / i != i && if_psquare(n / i)) ++count;
}
}
return count;
}
int main() {
int n = 16;
cout << "Total perfect divisors of " << n << " = " << count_pdivisors(n) << "\n";
n = 12;
cout << "Total perfect divisors of " << n << " = " << count_pdivisors(n);
return 0;
}
Kết quả
Total perfect divisors of 16 = 3 Total perfect divisors of 12 = 2