分解质因数

867. 分解质因数

题目分解一个数的所有质因数,并输出底数和指数。

例如:36=3^2 + 2^2;

链接(acwing 867)[https://www.acwing.com/problem/content/869/]

代码如下:

#include<iostream>
using namespace std;
#define cout(x) printf("%d",x)
#define cin(x) scanf("%d",&x)
#define ll long long
void fun(int x){
	for(int i=2;i<=x/i;i++){
		int ans=0;
		while(x%i==0){
			ans++;
			x/=i;
		}
		if(ans>0)cout<<i<<" "<<ans<<endl;
	}
	if(x>1)cout<<x<<" "<<1<<endl;
}
int main(){
	int n,a;
	cin>>n;
	for(int i=0;i<n;i++){
		cin>>a;
		fun(a);
		cout<<endl;
	}
	return 0;
}

注意点:

1.i<=x/i可以等于。

2.要加(ans>0)特判。

3.可能有且仅有一个质因数大于sqrt(n)。

posted @ 2021-10-25 09:08  WMS_lalalala  阅读(38)  评论(0)    收藏  举报