题解 | #约数的个数#
约数的个数
https://www.nowcoder.com/practice/04c8a5ea209d41798d23b59f053fa4d6
#include <iostream> #include <string> #include <vector> #include <algorithm> #include <stack> #include <map> using namespace std; long long arr[2000]; int main() { int n; while (scanf("%d", &n) != EOF) { for (int i = 0; i < n; i++) { scanf("%lld", &arr[i]); } for (int i = 0; i < n; i++) { int res = 0; int j; for (j = 1; j * j < arr[i]; j++) { if (arr[i] % j == 0) { res += 2; //如果有一个小于arr[i]一半的数为约数,则必有一个大于arr[i]一半的为约数 } } if(j * j == arr[i]) res++; //最后一种情况 printf("%d\n", res); } } return 0; }