文章

35

粉丝

0

获赞

183

访问

5.9k

头像
质因数个数 题解:
P1156 清华大学上机题
发布于2026年3月15日 13:38
阅读数 32

#include <bits/stdc++.h>
using namespace std;
const int N = 1e6 + 9;  //其实1e5好像就够有点忘记了,开多点保险一些
int prime[N];
bool is_prime[N];

void get_prime()
{
	is_prime[0] = is_prime[1] = false;
	for(int i = 2; i < N; i ++)
	{
		if(is_prime[i]){
			prime[++ prime[0]] = i;
		}
		for(int j = 1; j <= prime[0]; j ++)
		{
			if(prime[j] * i > N) break;
			is_prime[prime[j] * i] = false;
			if(i % prime[j] == 0) break;
		}
	}
} //模板

int main() {
    memset(prime, 0, sizeof(prime));
    memset(is_prime, true, sizeof(is_prime));
    get_prime();
    
    int n;
    while(cin >> n)
    {
    	int temp = n; int cnt = 0;
    	for(int i = 1; i <= prime[0]; i ++)
    	{
    		if(temp == 1) break;  //为1结束,之前以为是0
    		while(temp % prime[i] == 0){
    			cnt ++;
    			temp /= prime[i];
			}
		}
        if(temp != 1) cnt ++; //temp不是1说明本身是一个很大的质因子
		cout << cnt << '\n';
	}
}

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发