#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn=1e5+7;
const ll mod=1e9+7;
bool a[maxn];///存放对于i是否是素数的判断
///试除法
bool priem(ll n)
{
if(n==1)
return false;
for(ll i=2;i*i<=n;i++)
{
if(n%i==0)
return false;
}
return true;
}
///唉式筛
void ai()
{
a[1]=false;
for(int i=2;i<maxn;i++)
a[i]=true;
for(int i=2;i<maxn;i++)
{
if(a[i])
{
for(int j=i*2;j<maxn;j+=i)///优化的话就把出书画改成j=i*i
a[j]=false;
}
}
}
///线性筛(欧拉筛)
void oula(ll N)
{
bool number[N+1];
ll prime[N+1];
ll i,j,count=0;
memset(number,true,sizeof(number));
for(i=2;i<=N;i++)
{
if(number[i])
prime[count++]=i;
for(j=0;j<count&&prime[j]*i<=N;j++)
{
number[prime[j]*i]=false;
if(i%prime[j]==0)//精华就在于此:它保证每个合数只会被它的最小质因数筛去,因此每个数只会被标记一次,所以时间复杂度是O(n)
break;
}
}
for(i=2;i<N+1;i++)
if(number[i]==true)
printf("%d ",i);
}
///欧拉函数
ll phi(ll n)
{
ll i,rea=n;
for(i=2;i*i<=n;i++)
{
if(n%i==0)
{
rea=rea-rea/i;
while(n%i==0)
n/=i;
}
}
if(n>1)
rea=rea-rea/n;
return rea;
}
///快速幂
ll quickpow(ll base,ll mi)
{
ll ans=1;
while(mi)
{
if(mi&1)
ans=ans*base%mod;
base=base*base%mod;
mi>>=1;
}
return ans;
}
///唯一分解
void fen(ll n)
{
int a[1000][2];
int w=0;
ll t=n;
for(int i=2;i<maxn&&n;i++)
{
if(priem(i))
{
if(n%i==0)
{
a[w][0]=i;
int m=0;
while(n%i==0)
{
m++;
n/=i;
}
a[w][1]=m;
w++;
}
}
}
cout<<t<<"=";
for(int i=0;i<w;i++)
cout<<a[i][0]<<"^"<<a[i][1]<<"*";
cout<<endl;
}
int main()
{
ll y,b;
return 0;
}