文章

19

粉丝

0

获赞

151

访问

3.9k

头像
质因数个数 题解:超时
P1156 清华大学上机题
发布于2026年3月15日 21:46
阅读数 166

#include<stdio.h>
#define N 100000000
int primes[N];
int st[N], s = 0;
int sum;


void creatPrime(int n) {
	for (int i = 2; i < n; i++) {
		if (!st[i])
			primes[s++] = i;
		for (int j = 0; i * primes[j] < n; j++) {
			st[i * primes[j]] = 1;
			if (i % primes[j] == 0)
				break;
		}
	}
}

void f(int n) {
	int num = 0;
	while (n != 0 && primes[num] <= n) {
		if (n % primes[num] == 0) {
			sum++;
			n = n / primes[num];
		}
		else {
			num++;
		}
	}
}

int main() {
	int n;
	creatPrime(N);
	while (~scanf("%d", &n)) {
		sum = 0;
		f(n);
		printf("%d\n", sum);
	}
	return 0;
}

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发