首页 > 代码库 > 欧拉函数&&快速乘方
欧拉函数&&快速乘方
1 //phi(a)=a*(a1-1)*(a2-1)*(a3-1)*...*(an-1)/(a1*a2*a3*...*an); 2 #include<iostream> 3 #include<cstdlib> 4 #include<cstring> 5 #include<cmath> 6 using namespace std; 7 typedef __int64 LL; 8 LL phi(LL a){//phi 9 LL temp=a;10 for(LL i=2;i*i<=a;i++)11 if(a%i==0){12 while(a%i==0) a/=i;13 temp=temp/i*(i-1);14 // cout<<"a="<<a<<" i="<<i<<endl;15 }16 //cout<<"a="<<a<<endl;17 if(a!=1) temp=temp/a*(a-1);18 return temp;19 }20 int main(){21 LL a;22 while(cin>>a)23 cout<<"phi(a)="<<phi(a)<<endl;24 return 0;25 }
快速乘方 求a的k次方mod b
1 #include<iostream> 2 #include<cstdlib> 3 #include<cstring> 4 using namespace std; 5 typedef __int64 LL; 6 LL modd(LL a,LL k,LL b){ 7 int temp,ans; 8 ans=1; 9 temp=a;10 while(k!=0){11 if(k%2) ans=ans*temp%b;12 temp=temp*temp%b;13 k/=2;14 }15 return ans;16 }17 int main(){18 LL a,b,k;19 while(cin>>a>>b>>k)20 cout<<modd(a,k,b)<<endl;21 return 0;22 }
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。