最暴力方法,但是结果超时。
#include <iostream>
#include <algorithm>
#include <cstdlib>
#include <string.h>
#include <string>
#include <map>
#include <cstdio>
#include <cmath>
using namespace std;
int main()
{
int n;
int res;
while(cin>>n)
{
res=0;
for(int i=2;i<=n;i++)
{
while(n%i==0)
{
res++;
n /= i;
}
}
cout<<res<<endl;
}
return 0;
}
加上素数判断,ac
#include <iostream>
#include <algorithm>
#include <cstdlib>
#include <string.h>
#include <string>
#include <map>
#include <cstdio>
#include <cmath>
using namespace std;
bool isPrime(int n)
{
int m=sqrt(n);
for(int i=2;i<=m;i++)
{
if(n%i==0)
return false;
}
return true;
}
int main()
{
int n;
int res;
while(cin>>n)
{
res=0;
if(isPrime(n))
{
cout<<"1"<<endl;
continue;
}
for(int i=2;i<=n;i++)
{
while(n%i==0)
{
res++;
n /= i;
}
}
cout<<res<<endl;
}
return 0;
}
#include <iostream>
#include <algorithm>
#include <cstdlib>
#include <string.h>
#include <string>
#include <map>
#include <cstdio>
#include <cmath>
using namespace std;
int isPrime(int n)
{
int m=sqrt(n);
for(int i=2;i<=m;i++)
{
if(n%i==0)
return i;
}
return 0;
}
int main()
{
int n;
int res;
while(cin>>n)
{
res=0;
int i=isPrime(n);
if(!i)
{
cout<<"1"<<endl;
continue;
}
for(;i<=n;i++)
{
while(n%i==0)
{
res++;
n /= i;
}
}
cout<<res<<endl;
}
return 0;
}