质因数个数
int PrimeCount(int n)
{
int cnt=0;
int prime;
while(n%2==0)
{
cnt++;
n/=2;
}
for(prime=3;prime<=n;prime+=2)
{
while(n!=1)
{
if(n%prime==0)
{
cnt++;
n=n/prime;
}
else
break;
}
}
return cnt;
}
判断小于n共有几个质数(埃拉托色尼筛)
int countPrimes(int n)
{
vector<bool> isPrime(n,true);
int cnt=0;
for(int i=2;(long long)i*i<n;i++)
{
if(isPrime[i])
{
for(int j=i*i;j<n;j+=i)
isPrime[j]=false;
}
}
for(int i=2;i<n;i++)
{
if(isPrime[i])
cnt++;
}
return cnt;
}