#include<iostream>
using namespace std;
int n,p,x,y;
void exgcd(int a,int b,int &x,int &y){
if(b==0){
x=1;
y=0;
return;
}
exgcd(b,a%b,y,x);
y-=(a/b*x);
}
int main(){
ios::sync_with_stdio(false);
cin>>n>>p;
for(int i=1;i<=n;i++){
x=y=0;
exgcd(i,p,x,y);
x=(x%p+p)%p;//move to 1--p;
cout<<x<<endl;
}
}
其中利用了扩欧算法以求得在模p意义下的逆元,并将逆元x的取值移动到了1至p之间。
大佬帮忙!!!
%%%%%%%%%