题解 | 质因数的个数

质因数的个数

https://www.nowcoder.com/practice/20426b85f7fc4ba8b0844cc04807fbd9

#define _CRT_SECURE_NO_WARNINGS

#include <cstdio>
#include <iostream>
#include <vector>

using namespace std;
const int maxn = 4e4;
bool isprime[maxn];
vector<int>prime;

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;
		}
	}
}

int numberofprimefactor(int number) {
	int answer = 0;
	for (int i = 0; i < prime.size(); i++) {
		int factor = prime[i];
		if (number < factor) {
			break;
		}
		int exponent = 0;
		while (number % factor == 0) {
			exponent++;
			number /= factor;
			// printf("num:%d\n", number);
			// printf("yingzi:%d\n", factor);
		}
		answer += exponent;
	}
	if (number > 1) { //如果 number 大于 1,说明 number 本身是一个(大于4e4的)质数,将 answer 加 1
		answer += 1;
	}
	return answer;
}

int main() {

	initial();//shai fa

	/*int k;
	while (scanf("%d", &k)!=EOF) {
		printf("%d\n", prime[k - 1]);
	}*/
	int number;
	while (scanf("%d", &number) != EOF) {
		printf("%d\n", numberofprimefactor(number));
	}
	return 0;
}

质数(素数)相关问题 文章被收录于专栏

1.质数判断 2.输出一定范围内质数(筛法) 机试技巧:用打表法降低时间复杂度

全部评论

相关推荐

02-22 21:16
已编辑
门头沟学院 运营
牛客928043833号:离了你谁还拿我当个宝
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
正在热议
更多
牛客网
牛客企业服务