问题 D: 约数的个数
问题 D: 约数的个数
时间限制: 1 Sec 内存限制: 32 MB提交: 272 解决: 90
[提交][状态][讨论版][命题人:外部导入]
题目描述
输入n个整数,依次输出每个数的约数的个数。
输入
输入的第一行为N,即数组的个数(N<=1000)
接下来的1行包括N个整数,其中每个数的范围为(1<=Num<=1000000000)
当N=0时输入结束。
输出
可能有多组输入数据,对于每组输入数据,
输出N行,其中每一行对应上面的一个数的约数的个数。
样例输入
6
1 4 6 8 10 12
0
样例输出
1 3 4 4 4 6
#include<bits/stdc++.h> using namespace std; int solve(int x) { int sum=0; int n=sqrt(x); for(int i=1;i<=n;i++){ if(x%i==0) sum+=2; } if(n*n==x) sum--;//等于的话 会多加一个 return sum; } int main() { int n; while(scanf("%d",&n)==1,n){ for(int i=0;i<n;i++){ int x; scanf("%d",&x); printf("%d\n",solve(x)); } } return 0; }