题解 | #求最小公倍数#
求最小公倍数
https://www.nowcoder.com/practice/22948c2cad484e0291350abad86136c3
#include <iostream> #include <cmath> #include <vector> using namespace std; vector<int> func(int m, int n){ vector<int> v(m, 0); for(int i=2;i<=sqrt(m);i++){ if (n % i ==0 && m % i ==0){ v[i-1]++; } } return v; } int main() { int a, b; int ans; while (cin >> a >> b) { // 注意 while 处理多个 case int A = max(a, b); int B = min(a, b); if (A%B==0){ ans = A; }else{ ans = A*B; vector<int> v=func(A, B); for(int i=2; i<=sqrt(A); i++){ if (v[i-1]>0){ ans = ans / i; } } } cout << ans << endl; } } // 64 位输出请用 printf("%lld")