【模板】质因数分解

对于 N 的质因数分解,直接从 2 开始遍历到 \(\sqrt n\) 即可,最后如果 N>1,则多计入一个因子即可。

代码如下

#include <bits/stdc++.h>
using namespace std;
const int maxn=1e5;

int n,p[maxn],num[maxn],cnt;

int main(){
	int T=0;
	while(scanf("%d",&n)&&n>=0){
		if(T)puts("");
		cnt=0;
		for(int i=2;i<=sqrt(n);i++){
			if(n%i!=0)continue;
			p[++cnt]=i,num[cnt]=0;
			while(n%i==0)n/=i,++num[cnt];
		}
		if(n>1)p[++cnt]=n,num[cnt]=1;
		printf("Case %d.\n",++T);
		for(int i=1;i<=cnt;i++)printf("%d %d ",p[i],num[i]);
		puts("");
	}
	return 0;
}
posted @ 2019-03-14 19:55  shellpicker  阅读(741)  评论(0编辑  收藏  举报