logo头像

往者不可谏,来者犹可追。

牛客-清华-02-约数的个数

题目描述

输入n个整数,依次输出每个数的约数的个数


输入描述:

输入的第一行为N,即数组的个数(N<=1000)
接下来的1行包括N个整数,其中每个数的范围为(1<=Num<=1000000000)
当N=0时输入结束。


输出描述:

可能有多组输入数据,对于每组输入数据,
输出N行,其中每一行对应上面的一个数的约数的个数。


示例1

输入

5
1 3 4 6 12

输出

1
2
3
4
6


代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <cmath>
using namespace std;

int main() {
int n, m;
while(cin>>n) {
while(n--) {
int cnt = 0;
cin>>m;
for(int i = 1; i <= sqrt(m); i++) {
int a = m%i;
if(a==0) {
if(i*i==m) cnt++;
else cnt+=2;
}
}
cout<<cnt<<endl;
}
}
return 0;
}

其中循环部分还可以这么写

1
2
3
4
5
6
7
cin>>m;
for(i = 1; i*i < m; i++) {
if(m%i==0) {
cnt+=2;
}
}
if(i*i==m) cnt++;
上一篇