lcm.c 482 B

1234567891011121314151617181920212223242526
  1. // SPDX-License-Identifier: GPL-2.0-only
  2. #include <linux/compiler.h>
  3. #include <linux/gcd.h>
  4. #include <linux/export.h>
  5. #include <linux/lcm.h>
  6. /* Lowest common multiple */
  7. unsigned long lcm(unsigned long a, unsigned long b)
  8. {
  9. if (a && b)
  10. return (a / gcd(a, b)) * b;
  11. else
  12. return 0;
  13. }
  14. EXPORT_SYMBOL_GPL(lcm);
  15. unsigned long lcm_not_zero(unsigned long a, unsigned long b)
  16. {
  17. unsigned long l = lcm(a, b);
  18. if (l)
  19. return l;
  20. return (b ? : a);
  21. }
  22. EXPORT_SYMBOL_GPL(lcm_not_zero);