Tìm tất cả ước số của số n. Cách tối ưu: chỉ duyệt đến √n. Nếu i chia hết n, thì cả i và n/i đều là ước. Nếu i == n/i (n là bình phương hoàn hảo) chỉ in một lần.
Ví dụ mã nguồn
#include <bits/stdc++.h>
using namespace std;
void findDivisors(int n) {
for (int i=1; i*i<=n; i++) {
if (n % i == 0) {
if (i == n/i) cout << i << ' ';
else cout << i << ' ' << n/i << ' ';
}
}
cout << endl;
}
int main() {
findDivisors(65); // 1 65 5 13
return 0;
}
Kết quả
1 65 5 13
Ước số của 65: 1, 5, 13, 65. Thứ tự xuất hiện không sắp xếp.