蓝桥杯2022年第十三届省赛真题-质因数个数

题目 2692: 蓝桥杯2022年第十三届省赛真题-质因数个数
时间限制: 3s 内存限制: 320MB 提交: 13454 解决: 1659
题目描述
给定正整数 n,请问有多少个质数是 n 的约数。

输入格式
输入的第一行包含一个整数 n。

输出格式
输出一个整数,表示 n 的质数约数个数。

样例输入复制
396
样例输出复制
3
提示
396 有 2, 3, 11 三个质数约数。

对于 30% 的评测用例,1 ≤ n ≤ 10000。

对于 60% 的评测用例,1 ≤ n ≤ 109。

对于所有评测用例,1 ≤ n ≤ 1016。

1.分析

        1.定理:一个数可以分解成n个质数次幂的相乘

        即:p1^a1*p2^a2*p3^a3.......*pn^an

        计算出p的个数即可。

2.代码

#include
using namespace std;
typedef long long LL;
int main() {                               //经典做法
	LL n,num=0;
	cin >> n;
	for (LL i = 2; i <= n / i; i++) {      //n/i差不多等于sqrt(n),而且更快
		if (n % i == 0) {
			num++;
			while (n % i == 0) {             //把p的次幂除尽
				n /= i;
			}
		}
	}
	if (n > 1) {num++;}             //最后判断
	cout << num << endl;
	return 0;
}

你可能感兴趣的:(蓝桥杯,蓝桥杯,职场和发展)