质因数的幂次方的记录统计
#include<iostream>
using namespace std;
bool mark[10001];
int prime[10001];
int primeSize;
void init(){
primeSize = 0;
for(int i = 2; i <= 10000;i++){
if(mark[i] == true) continue;
prime[primeSize++] = i;
for(int j = i*i;j <= 10000;j += i)
{
mark[j] = true;
}
}
}
int main(){
init();
int n;
while(scanf("%d",&n)!=EOF){
int ansPrime[30];
int ansSize = 0;
int ansNum[30];//幂指数的记录
int ans ;
for(int i = 0; i < primeSize;i++){
if(n % prime[i] == 0){//潜在可能成为目标因数(幂非0)
ansNum[ansSize] = 0;
ansPrime[ansSize] = prime[i];
while(n % prime[i] == 0){
ansNum[ansSize]++;//幂增加
n /= prime[i];
}
//while n == 1时结束
ansSize++;
if(n==1) break;
}
}
if(n != 1){
ansPrime[ansSize] = n;
ansNum[ansSize++] = 1;
}
ans = 0;
for(int i = 0; i < ansSize;i++){
ans += ansNum[i];
}
cout<<ans<<endl;
}
}