1:试除法求一个数的所有约数
一个数的约数也是成对出现的,所以在枚举时也可以只枚举较小的那一个
1 #include <bits/stdc++.h> 2 using namespace std; 3 vector<int> get_divisors(int n) { //求n的所有约数 4 vector<int> res; 5 for (int i = 1; i <= n / i; i++) { //时间复杂度sqrt(n) 6 if (n % i == 0) { 7 res.push_back(i); 8 if (i != n / i) { 9 res.push_back(n / i); 10 } 11 } 12 } 13 sort(res.begin(), res.end()); 14 return res; 15 } 16 int main() { 17 int n; 18 cin >> n; 19 while (n--) { 20 int x; 21 cin >> x; 22 vector<int> res = get_divisors(x); 23 for (int i = 0; i < res.size(); i++) { 24 cout << res[i] << " "; 25 } 26 cout << endl; 27 } 28 return 0; 29 }