题目链接:约数的个数
题目描述
输入n个整数,依次输出每个数的约数的个数
输入描述
输入的第一行为N,即数组的个数(N<=1000)
接下来的1行包括N个整数,其中每个数的范围为(1<=Num<=1000000000)
当N=0时输入结束。
输出描述
可能有多组输入数据,对于每组输入数据,
输出N行,其中每一行对应上面的一个数的约数的个数。
示例
输入
5
1 3 4 6 12
输出
1
2
3
4
6
代码:
#include <stdio.h>
#include <stdlib.h>
int main(){
int n, * lst, i = 0;
scanf("%d", &n);
lst = (int*)malloc(sizeof(int) * n); //动态申请数组空间
while (1) { //读取一行的n个整数
scanf("%d", &lst[i]);
i++;
if (getchar() == '\n') break;
}
for (int i = 0; i < n; i++) {
int tpcount = 0, j;
for (j = 1; j*j < lst[i]; j++) { //如果此处不这样做容易超时
if (lst[i] % j == 0) {
tpcount += 2;
}
}
if(j*j == lst[i]) tpcount++;
printf("%d\n", tpcount);
}
free(lst); //释放数组空间
return 0;
}