在c++上我能做什么来做一个数的逆运算?[closed]

cgh8pdjw  于 2023-03-14  发布在  其他
关注(0)|答案(1)|浏览(155)

已关闭。此问题需要details or clarity。当前不接受答案。
**想要改进此问题?**添加详细信息并通过editing this post阐明问题。

四年前关闭了。
Improve this question
我正在写一个RSA代码,我不知道如何在C++上做一个数的倒数。你会怎么做呢?有一些库可以帮助我自动做?

vcudknz3

vcudknz31#

已锁定。此时正在解析disputes about this answer’s content。当前不接受新的交互。

以下是C++中的 * 模乘逆 * 的几个示例:
https://www.geeksforgeeks.org/multiplicative-inverse-under-modulo-m/

// C++ program to find multiplicative modulo inverse using 
// Extended Euclid algorithm. 
#include<iostream> 
using namespace std; 
  
// C function for extended Euclidean Algorithm 
int gcdExtended(int a, int b, int *x, int *y); 
  
// Function to find modulo inverse of a 
void modInverse(int a, int m) 
{ 
    int x, y; 
    int g = gcdExtended(a, m, &x, &y); 
    if (g != 1) 
        cout << "Inverse doesn't exist"; 
    else
    { 
        // m is added to handle negative x 
        int res = (x%m + m) % m; 
        cout << "Modular multiplicative inverse is " << res; 
    } 
} 
  
// C function for extended Euclidean Algorithm 
int gcdExtended(int a, int b, int *x, int *y) 
{ 
    // Base Case 
    if (a == 0) 
    { 
        *x = 0, *y = 1; 
        return b; 
    } 
  
    int x1, y1; // To store results of recursive call 
    int gcd = gcdExtended(b%a, a, &x1, &y1); 
  
    // Update x and y using results of recursive 
    // call 
    *x = y1 - (b/a) * x1; 
    *y = x1; 
  
    return gcd; 
} 
  
// Driver Program 
int main() 
{ 
    int a = 3, m = 11; 
    modInverse(a, m); 
    return 0; 
}

下面是对它的作用的一个很好的描述:
Modular multiplicative inverse

相关问题