//求逆元d void D(int e,int Euler_n ,int &d) { int Sign_of_Inverse_Element=0;//判断是否求出逆元的标志:Sign_of_Inverse_Element。当Sign_of_Inverse_Element=1,则求出了逆元 do { for (int i = 1; i <Euler_n; i++) { if ((i * e) % Euler_n == 1) { Sign_of_Inverse_Element = 1; //Sign_of_Inverse_Element=1时表面求出了逆元d d = i; } } } while (Sign_of_Inverse_Element !=1); }
时间: 2024-03-05 10:52:06 浏览: 64
求逆元程序
这段代码用于计算给定正整数 e 和 Euler_n 的逆元 d。
逆元的定义是:若 a 和 n 互质,且存在整数 x 使得 ax ≡ 1 (mod n),则称 x 是 a 模 n 的逆元。
该函数通过不断枚举 1 到 Euler_n-1 的整数 i,判断是否存在 i 是 e 模 Euler_n 的逆元,如果存在,将 d 赋值为 i,并将 Sign_of_Inverse_Element 设为 1,表示求出了逆元。最后返回 d。
以下是该函数的代码:
```cpp
void D(int e, int Euler_n, int& d) {
int Sign_of_Inverse_Element = 0;
do {
for (int i = 1; i < Euler_n; i++) {
if ((i * e) % Euler_n == 1) {
Sign_of_Inverse_Element = 1;
d = i;
}
}
} while (Sign_of_Inverse_Element != 1);
}
```
注意,代码中也用到了引用传参,将 d 的值传回主函数中。可以这样调用该函数:
```cpp
int main() {
int e = 17, Euler_n = 60;
int d;
D(e, Euler_n, d);
cout << "d = " << d << endl;
return 0;
}
```
输出应为:
```
d = 53
```
阅读全文