快速幂浅谈

Posted dragondragon

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了快速幂浅谈相关的知识,希望对你有一定的参考价值。

快速幂——>Miller_Rabin方法

1.初步认知:2

// 11 == 1101 == 2^0+2^2+2^3
#include<bits/stdc++.h>
using namespace std;
int pow(int a,int b)

    int ans=1,base=a;
    while(b!=0)
    
        if(b&1!=0) ans*=base;
        base*=base;
        b>>=1;
    
    return ans;

int main()

    int a,b;
    while(~scanf("%d%d",&a,&b))//scanf("%d%d",&a,&b);
    
        printf("%d\n",pow(a,b));
    
    return 0;

 

 

 

 2.

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll qmod(ll a,ll b)

	ll ans=1,base=a;
	while(b)
	
		if(b&1) ans*=base;
		base*=base;
		b>>=1;
	
	return ans;

int main()

	ll a,b;
	while(~scanf("%lld%lld",&a,&b))
	
		printf("%lld\n",pow(a,b));
	
	return 0;

3.从知乎上借鉴的:

#include<bits/stdc++.h>
using namespace std;
int pow(int a,int b,int p)

	int ans=1;
	while(b)
	
		if(b&1) ans=(long long) ans*a%p;
		a=(long long)a*a%p;
		b>>=1;
	
	return ans;

int main()

	int a,b,p;
	while(cin>>a>>b>>p) cout<<pow(a,b,p)<<endl;
	return 0;

4.

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll qmod(ll a,ll n,ll m)//calculate the value of (a^n MOD m). 

	ll ans=1;
	while(b)
	
		if(b&1) ans=ans*a%m;
		a=a*a%m;
		b>>=1;
	
	return ans;

int main()

	ll a,b,m;
	while(cin>>a>>b>>m) cout<<qmod(a,b,m)<<endl;
	return 0;

5.

#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
ll prime[65000];
void f()

	prime[0]=prime[1]=0;
	for(int i=2;i<65000;i++) prime[i]=1;
	for(int i=2;i<65000;i++)
		if(prime[i])
			for(int j=2*i;j<65000;j+=i) prime[j]=0;
//素数提前打表 

ll powmod(ll a,ll n,ll m)//a^n MOD m;

	ll ans=1;
	while(n)
	
		if(n&1) ans=ans*a%m;
		a=a*a%m;
		n>>=1;
	
	return ans;


int tests(int n)

	for(int i=2;i<n;i++)
	
		if(powmod(i,n,n)!=i) return 0;
	
	return 1;


int main()

	f();
	int n;
	while(cin>>n && n)
	
		if(!prime[n] && tests(n))
			cout<<"The number "<<n<<" is a Carmichael number.\n";
		else 
			cout<<n<<" is normal.\n";
	
	return 0;

  ——————————————————————————————https://blog.csdn.net/qq_41785863/article/details/81266531

 

以上是关于快速幂浅谈的主要内容,如果未能解决你的问题,请参考以下文章

欧拉函数 / 蒙哥马利快速幂 / 容斥

快速乘快速幂(矩阵快速幂)

算法初步:快速乘,快速幂,矩阵快速幂

快速幂计算(整数快速幂/矩阵快速幂)

关于快速幂快速乘矩阵快速幂

快速幂与矩阵快速幂