给定某个正整数 N,求其素因子分解结果,即给出其因式分解表达式
输入格式:
输入long int范围内的正整数 N。
输出格式:
按给定格式输出N的素因式分解表达式,即 N=p1^k1 * p2 ^ k2*…*pm ^ km,其中pi为素因子并要求由小到大输出,指数ki为pi的个数;当ki为1即因子pi只有一个时不输出ki。
输入样例:
1323
输出样例:
1323=3^3*7^2
一眼
分解质因数
,但有个很坑的点就是1 = 1
,如果输入1的话 答案是1 = 1
(就很离谱)
AC代码:
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define pii pair<long long,long long>
vector<pii>v;
void divide(ll x) //分解质因数模板
{
for (ll i = 2; i <= (int)sqrt(x); i++)
{
if (x % i == 0)
{
ll s = 0;
while (x % i == 0) x /= i, s++;
v.push_back({i,s});
}
}
if (x > 1) v.push_back({ x,1 });
}
int main()
{
ll n;
cin >> n;
if(n==1)
{
cout<<"1=1\n";
return 0;
}
divide(n);
cout << n << "=";
for (ll i = 0; i < v.size(); i++)
{
cout << v[i].first;
if(v[i].second!=1) cout<<"^"<<v[i].second;
if (i < v.size() - 1) cout << "*";
}
return 0;
}