分解质因子

这个需要素数筛

#include<iostream>
#include<algorithm>
using namespace std;
const int maxn=4e5+100;
int prime[maxn];
int biaoji[maxn];
int cnt;
void getPrime(){
    for(int i=2;i<maxn;i++){
        if(!biaoji[i]){
            prime[++cnt]=i;
        }
        for(int j=1;j<=cnt&&i*prime[j]<maxn;j++){
            biaoji[i*prime[j]]=1;
            if(i%prime[j]==0){
                break;
            }
        }
    }
}
int main(){
	getPrime();
	int n;
	cin>>n;
	for(int i=1;prime[i]*prime[i]<=n;i++){
		int cnt=0;
		while(n%prime[i]==0){
			cnt++;
			n/=prime[i];
		}
		if(cnt)
			cout<<prime[i]<<" "<<cnt<<endl;
	}
	if(n!=1){
		cout<<1<<" "<<n<<endl;
	} 
	cout<<endl;
	return 0;
}
posted @ 2023-10-22 10:36  lipu123  阅读(9)  评论(0)    收藏  举报