/* 改编自国际大学生程序设计例题解(-) 原来是pascal码 */ #include <iostream> using namespace std; //最大公约数的算法 int gcd(int a, int b) { if (a == 0) return b; else return gcd(b%a, a); } //最小公倍数的算法 int lcm(int a, int b) { if (a * b == 0) return 0; else return a * b / gcd(a,b); } // 求a的b除以n的约数 //采用二进制提高效率类似于求a的b次方,减少循环次数 int modExp(int a, int b, int n) { int iresult = 1; int itemp = a % n; while (b > 0) { if (b % 2 == 1) { iresult = (iresult * itemp) % n; } itemp = (itemp * itemp) % n; b /= 2; } return iresult; } int main() { cout << gcd(1001,767) << endl; cout << lcm(1001,767) << endl; cout << modExp(2, 10 ,100) << endl; return 0; }