#include <set>
#include <cmath>
#include <queue>
#include <stack>
#include <vector>
#include <string>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include <iostream>
#include <algorithm>
#include <functional>
#define PI acos(-1)
typedef long long ll;
using namespace std;
const int INF = 0x3f3f3f3f;
ll pow(ll a,ll n,ll mod)
{
a=a%mod;
ll result=1;
while(n>0)
{
if(n&1)result=result*a%mod;
a=a*a%mod;
n=n>>1;
}
return result%mod;
}
ll getphi(ll n)
{
ll t=n;
for(ll i=2;i*i<=n;i++)
{
if(n%i==0)
{
t=t-t/i;
while(n%i==0)n=n/i;
}
}
if(n!=1)t=t-t/n;
return t;
}
void solve(ll n,ll mod)
{
for(ll i=1;i<=n;i++)
{
if(pow(2,i,mod)==1)
{
printf("2^%lld mod %lld = 1\n",i,mod);
break;
}
}
}
int main()
{
ll n;
while(~scanf("%lld",&n))
{
if(n==1||n%2==0)
{
printf("2^? mod %lld = 1\n",n);
continue;
}
ll phi=getphi(n);
solve(phi,n);
}
}
hdu 1395 欧拉函数 快速幂
猜你喜欢
转载自blog.csdn.net/jun_____/article/details/82115044
今日推荐
周排行