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.

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|.

	 Remarks

	  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>.

Exceptions
	  Throws no exceptions.

Notes
	  Feature-test macro: __cpp_lib_gcd_lcm

Example
       // Run this code

	#include <numeric>
	#include <iostream>

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

	constexpr auto lcm(auto	x, auto	y) {
	    return std::lcm(x,y);
	}
	constexpr auto lcm(auto	head, auto...tail) {
	    return std::lcm(head, lcm(tail...));
	}

	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));

	    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	  constexpr function template returning	 the  greatest	common
       divisor of two
	  (C++17) integers
		  (function template)

http://cppreference.com		  2022.07.31			   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.0>

home | help