1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81
| #include <iostream> using namespace std; int CommFactor2(int m, int n); int main() { int a, b,c=1; char d;
while(c!=0){ int CommFactor1(int m,int n); int CommFactor2(int m,int n); int CommFactor3(int m,int n); cout<<"A、穷举法\nB、辗转相除法\nC、辗转相减法\n"; cout<<"请选择算法,输入算法前的大写字母:"; cin>>d; cout<<"请输入两个正整数:"; cin >> a >> b; switch(d) { case 'A' : cout << "这两个数的最大公约数为:" << CommFactor1(a,b)<< endl<< endl; break; case 'B' : cout << "这两个数的最大公约数为:" << CommFactor2(a,b)<< endl<< endl; break; case 'C' : cout << "这两个数的最大公约数为:" << CommFactor3(a,b)<< endl<< endl; break; } }
}
int CommFactor1(int m,int n) { int i; int factor = 1; for (i=2;i<=m&&i<<n;i++) { while(m % i == 0 && n % i == 0) { factor = factor * i; m = m / i; n = n / i; } } return factor; }
int CommFactor2(int m,int n) { int z = n; while (m % n != 0) { z = m % n; m = n; n = z; } return z; }
int CommFactor3(int m,int n) { while (m != n) { if (m > n) { m = m - n; } else { n = n - m; } } return m; } ```https:
|