文章

59

粉丝

0

获赞

334

访问

10.7k

头像
质因数个数 题解:vector+埃式筛+迭代器
P1156 清华大学上机题
发布于2026年3月11日 00:45
阅读数 165

#include <bits/stdc++.h>
using namespace std;

const int maxn = 1000001;
vector<int> sushu;
int judge[maxn] = { 0 }; //judge==0 is sushu
int main()
{
	int n;
	for (int i = 2; i*i < maxn; i++)
	{
		if (!judge[i])
			for (int j = i * i; j < maxn; j += i)
				judge[j]++;
	}
	for(int i=2;i<maxn;i++)
		if(!judge[i])
			sushu.push_back(i);
	while (cin >> n)
	{
		int cal=n;//calculate
		int count=0;
		for (auto it = sushu.begin(); it != sushu.end(); ++it)
			if(!judge[*it])
			{
				while(cal%(*it)==0)
				{
					cal/=*it;
					count++;
					if(cal==1)
						break;
				}
				if(cal==1)
						break;
			}
		if(cal>1)
			count++;
		cout<<count<<endl;
	}
	return 0;
}

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发