求逆.cpp
来自「密码学实验课的程序」· C++ 代码 · 共 61 行
CPP
61 行
#include<stdio.h>
int gcd(int d,int f)
{
int temp;
while(f!=0)
{
temp=d;
d=f;
f=temp%f;
}
return d;
}
int Euclid(int d, int f)
{
int Q[100],B[100],q1,q2,c1,c2,i=1;
B[0]=0;
B[1]=1;
q1=f/d;
c1=f%d;
Q[0]=q1;
if(c1!=1&&c1!=0)
{
q2=d/c1;
c2=d%c1;
Q[1]=q2;
while(c2!=1&&c2!=0)
{
q2=c1/c2;
c2=c1%c2;
c1=c2;
i++;
Q[i]=q2;
}
for(int j=0;j<=i;j++)
{
B[j+2]=(-1)*B[j+1]*Q[j]+B[j];
}
return B[i+2];
}
else
return (-1)*B[1]*Q[0]+B[0];
}
void main()
{
int d,f,d1;
printf("请输入任意两个互为素数的整数:");
while(1)
{
scanf("%d %d",&d,&f);
if((gcd(d,f))==1)
{
d1=Euclid(d, f);
if(d1<0)
d1=d1+f;
printf("%d\n",d1);
break;
}
else
printf("您输入的两数不合法请重新输入\n");
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?