分解质因数 P96 约束的个数
//分解质因数 P96
//https://www.nowcoder.com/practice/20426b85f7fc4ba8b0844cc04807fbd9?tpId=60&tqId=29479&tPage=1&ru=/kaoyan/retest/1001&qru=/ta/tsing-kaoyan/question-ranking
#include <iostream>
#include <cstdio>
#include <vector>
#include <cmath>
using namespace std;
//const int MAXN = sqrt(1e9)+1; //error: variable length array declaration not allowed at file scope
//低版本不支持
const int MAXN = 4e4;
vector<int> prime;
bool isPrime[MAXN];
void Initial(){
for(int i=0;i<MAXN;++i) isPrime[i] = true;
isPrime[0] = false;
isPrime[1] = false;
for(int i=2;i<MAXN;++i){
if(!isPrime[i]) continue;
prime.push_back(i);
for(int j=i*i;j<MAXN;j+=i) isPrime[j] = false;
}
return;
}
int NumberOfPrimeFactor(int number){
int answer = 0;
for(int i=0;i<prime.size() && prime[i]<number;++i){
int factor = prime[i];
while(number % factor == 0){
number /= factor;
answer++;
}
}
if(number > 1) answer++;
return answer;
}
int main(){
Initial();
int k;
while(scanf("%d",&k) != EOF){
printf("%d\n",NumberOfPrimeFactor(k));
}
return 0;
}
//习题6.7 约数的个数
//分解质因数习题 约束的个数 自己尝试改写 success
//或者用视频方法 先用向量保存起来 在累积 vector<int> exponent; exponent.push_back(current);
//https://www.nowcoder.com/practice/04c8a5ea209d41798d23b59f053fa4d6?tpId=60&tqId=29475&tPage=1&ru=/kaoyan/retest/1001&qru=/ta/tsing-kaoyan/question-ranking
#include <iostream>
#include <cstdio>
#include <vector>
#include <cmath>
using namespace std;
const int MAXN = 4e4;
vector<int> prime;
bool isPrime[MAXN];
void Initial(){
for(int i=0;i<MAXN;++i) isPrime[i] = true;
isPrime[0] = false;
isPrime[1] = false;
for(int i=2;i<MAXN;++i){
if(!isPrime[i]) continue;
prime.push_back(i);
for(int j=i*i;j<MAXN;j+=i) isPrime[j] = false;
}
return;
}
int NumberOfYueshu(int number){
int answer = 1;
int current;
for(int i=0;i<prime.size() && prime[i]<number;++i){
int factor = prime[i];
current = 0;
while(number % factor == 0){
number /= factor;
current++;
}
answer *= (current +1);
}
if(number > 1) answer *= 2;
return answer;
}
int main(){
Initial();
int n,m;
scanf("%d",&n);//或者用视频中的方式也行
while(n--){
scanf("%d",&m);
printf("%d\n",NumberOfYueshu(m));
}
return 0;
}

