题目描述
题面描述
输入若干个数,每个数位一个 int 类型的整数 x,需要返回这个数 x 所拥有的不同的质因数的个数。
例如数字 252 ,分解质因数为 252=2×2×3×3×7 ,那么它所拥有的不同质因数为 2,3,7 ,个数为 3 。
输入格式
第一行一个整数 q ,表示有 q 组询问。
接下去 q 行,每行包含一个正整数 x,表示一次询问。
输出格式
共 q 行,包含一个整数,表示一组询问的答案。
样例
样例输入
2
48
252
样例输出
2
3
数据范围
1≤q≤1000
2≤x≤106
1s, 256M
我的代码
#include<bits/stdc++.h>
using namespace std;
bool a(int x)
{
if(x==1)
{
return false;
}
for(int i=2;i*i<=x;i++)
{
if(x%i==0)
{
return false;
}
}
return true;
}
int main()
{
int q;
long long x;
cin>>q;
for(int i=1;i<=q;i++)
{
int ans=0;
scanf("%ld",&x);
for(int j=2;j<=x;j++)
{
if(a(j) and x%j==0)
{
ans++;
}
}
printf("%d\n",ans);
}
return 0;
}
请各位大佬看看有什么问题