假设N = p * q ,那么p与q都是N的约数
显然有 ,在1,2,... k ()中,如果N%k==0 ,那么就能找到N的一个或者两个约数
当时,找到N的两个约数,k与n/k
当时,找到N的一个约数,k
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<string.h>
#include<vector>
#include<math.h>
#define maxn 1000000
using namespace std;
typedef long long ll;
int main() {
int n, sum, num, sq;
while (scanf("%d", &n) == 1 && n!=0) {
while (n--) {
scanf("%d", &num);
sum = 0;
sq = (int)sqrt(num*1.0);
if (sq*sq == num) {
for (int j = 1; j < sq; j++)
if (num%j == 0)
sum += 2;
sum++;
}
else {
for (int j = 1; j <= sq; j++) {
if (num%j == 0)
sum += 2;
}
}
printf("%d\n", sum);
}
}
return 0;
}