题解 | #约数的个数#
约数的个数
https://www.nowcoder.com/practice/04c8a5ea209d41798d23b59f053fa4d6
#include <iostream>
#include<cmath>
#include<cstring>
using namespace std;
//int prime[100000];
/*
void judge(int n)
{
memset(prime,1,sizeof(prime));
for(int i=2;i<n;i++)
{
if(prime[i])
{
for(int j=2*i;j<n;j++)
{
prime[j]=0;//素数的倍数全不是素数,可以达到接近o(n)的效率
//如果从1-n,1-根号n去挨个查,需要o(n^1.5)
}
}
}
}
*/
int main()
{
int n;
/*
judge(100000);
int b[100000];
int j=0;
for(int i=0;i<100000;i++)
{
if(prime[i])b[j++]=i;
}
int num=j;
*/
while (cin >> n)
{
//筛法求素数?
int *data=(int*)malloc(sizeof(int)*n);
for(int i=0;i<n;i++)cin>>data[i];
for(int i=0;i<n;i++)
{
int count=0;
for(int j=1;j<=sqrt(data[i]);j++)
{
//这里采用筛法求素数的思想
if(data[i]%j==0)
{
count+=2;
if(j*j==data[i])count--;
}
}
cout<<count<<endl;
}
}
}
// 64 位输出请用 printf("%lld")

