常用的基础算法程序
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;
}