常用基础算法程序

常用基础算法程序

常用的基础算法程序

1.高位数逐位取出

逆序输出:

#include <iostream>
using namespace std;int main()
{int n;cin >> n;while (n){cout << n % 10;n /= 10;}return 0;
}

正序输出(使用递归):

#include <iostream>void get_first_digit(int num) {if(num < 10) {std::cout << num << " ";return;}get_first_digit(num / 10);std::cout << (num % 10) << " ";
}int main() {int num = 12345;get_first_digit(num);  // 输出:1 2 3 4 5return 0;
}

2.获取多位数位数

#include <iostream>
using namespace std;int main()
{int n;cin >> n;int cnt = 0;while (n){n /= 10;cnt++;}cout << cnt << endl;return 0;
}

3.求最大公约数

#include <iostream>
using namespace std;/// @brief Greatest Common Divisor
/// @param a
/// @param b
/// @return
int gcd(int a, int b)
{if (b == 0){return a;}else{return gcd(b, a % b);}
}int main()
{int a, b;cin >> a >> b;cout << gcd(a, b) << endl;return 0;
}

更推荐用循环写:

#include <iostream>
using namespace std;int main()
{int a, b;cin >> a >> b;int c = a % b;while (c){a = b;b = c;c = a % b;}cout << b << endl;return 0;
}

4.求最小公倍数

需要先实现最大公因数。

#include <iostream>
using namespace std;int main()
{int a, b;cin >> a >> b;cout << a * b / gcd(a, b) << endl;return 0;
}