Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
std::lcm(3)		      C++ Standard Libary		   std::lcm(3)

NAME
       std::lcm	- std::lcm

Synopsis
	  Defined in header <numeric>
	  template< class M, class N >			       (since C++17)
	  constexpr std::common_type_t<M, N> lcm( M m, N n );

	  Computes the least common multiple of	the integers m and n.

	  If  either  M	or N is	not an integer type, or	if either is (possibly
       cv-qualified)
	  bool,	the program is ill-formed.

	  The behavior is undefined if |m|, |n|, or the	least common  multiple
       of |m| and |n|
	  is not representable as a value of type std::common_type_t<M,	N>.

Parameters
	  m, n - integer values

Return value
	  If either m or n is zero, returns zero. Otherwise, returns the least
       common multiple
	  of |m| and |n|.

Exceptions
	  Throws no exceptions.

Notes
	  Feature-test macro  Value    Std	  Feature
	  __cpp_lib_gcd_lcm  201606L (C++17) std::gcd, std::lcm

Example
       // Run this code

	#include <iostream>
	#include <numeric>

	#define	 OUT(...) std::cout << #__VA_ARGS__ << " = " <<	__VA_ARGS__ <<
       '\n'

	constexpr auto lcm(auto	x, auto... xs)
	{
	    return ((x = std::lcm(x, xs)), ...);
	}

	int main()
	{
	    constexpr int p{2 *	2 * 3};
	    constexpr int q{2 *	3 * 3};
	    static_assert(2 * 2	* 3 * 3	== std::lcm(p, q));
	    static_assert(225 == std::lcm(45, 75));

	    static_assert(std::lcm( 6,	10) == 30);
	    static_assert(std::lcm( 6, -10) == 30);
	    static_assert(std::lcm(-6, -10) == 30);

	    static_assert(std::lcm( 24,	0) == 0);
	    static_assert(std::lcm(-24,	0) == 0);

	    OUT(lcm(2 *	3, 3 * 4, 4 * 5));
	    OUT(lcm(2 *	3 * 4, 3 * 4 * 5, 4 * 5	* 6));
	    OUT(lcm(2 *	3 * 4, 3 * 4 * 5, 4 * 5	* 6, 5 * 6 * 7));
	}

Output:
	lcm(2 *	3, 3 * 4, 4 * 5) = 60
	lcm(2 *	3 * 4, 3 * 4 * 5, 4 * 5	* 6) = 120
	lcm(2 *	3 * 4, 3 * 4 * 5, 4 * 5	* 6, 5 * 6 * 7)	= 840

See also
	  gcd	  computes the greatest	common divisor of two integers
	  (C++17) (function template)

http://cppreference.com		  2024.06.10			   std::lcm(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=std::lcm&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help