C++ 程序实现欧拉定理

c++server side programmingprogramming

这是一个 C++ 程序,演示了欧拉定理的实现。数字和模数必须互质,模乘逆元才能存在。

算法

开始
    获取输入以查找模乘逆元
    将输入作为模值
    执行逆数组函数:
    modInverse(x + 1, 0);
    modInverse[1] = 1;
    for i = 2 to x
        modInverse[i] = (-(y / i) * modInverse[y mod i]) mod y + y
    return modInverse
结束

示例代码

#include <iostream>
#include <vector>
using namespace std;
vector<int> inverseArray(int x, int y) {
   vector<int> modInverse(x + 1, 0);
   modInverse[1] = 1;
   for (int i = 2; i <= x; i++) {
      modInverse[i] = (-(y / i) * modInverse[y % i]) % y + y;
   }
   return modInverse;
}
int main() {
   vector<int>::iterator it;
   int a, m;
   cout<<"输入数字以查找模乘逆元:";
   cin>>a;
   cout<<"输入模数值:";
   cin>>m;
   cout<<inverseArray(a, m)[a]<<endl;
}

输出

输入数字以查找模乘逆元:26
输入模数值:7
7

相关文章