Nejmenším společným násobkem (nsn, least common multiple - zkratka: lcm) přirozených čísel  je číslo, které je násobkem každého z čísel 
 a je minimální.
Nejmenší společný násobek čísel   značíme jako:
Výpočet
Rozklad na prvočísla
Nejjednodušším způsobem výpočtu nejmenšího společného násobku čísel  je tato čísla rozložit na prvočísla a z rozkladů vybrat prvočinitele v nejvyšších mocninách. Jejich následným vynásobením získáme 
.
Příklad
Jaký je nejmenší společný násobek čísel 6, 8 a 15?
Příklad
Jaký je nejmenší společný násobek čísel 140 a 72.
Příklad
Jaký je nejmenší společný násobek čísel 288 a 420?
Výše zmíněný postup si můžeme ilustrovat také pomocí Vennova diagramu, v němž budou čísla 288 a 420 reprezentována množinami svých prvočíselných dělitelů. Jelikož tyto množiny mají společné dělitele (průnik množin) uvedeny právě jednou, tak na diagramu najdeme všechny prvočinitele v jejich nejvyšších mocninách. Vynásobením všech čísel z diagramu tedy získáme nejmenší společný násobek čísel 288 a 420 (tj. 10080).
Euklidův algoritmus
Pro výpočet nejmenšího společného násobku dvou čísel lze také využít přepočtu z největšího společného dělitele. Tato metoda je zejména u velkých čísel výrazně výpočetně jednodušší než rozklad na prvočísla.
Pro efektivní výpočet nejvyššího společného dělitele můžeme použít Euklidův algoritmus.
Příklad
Kód
    /**
     * Returns least common multiple of two numbers
     * @param a number 1
     * @param b number 2
     * @return lcm(a, b)
     */
    public static int lcm(int a, int b) {
        if (a == 0 || b == 0) {
            return 0;
        }
        return (a * b) / gcd(a, b);
    }
    /**
     * Returns greatest common divisor of the given numbers
     * @param a number 1
     * @param b number 2
     * @return gcd(a, b)
     */
    public static int gcd(int a, int b) {
        if (a < 1 || b < 1) {
            throw new IllegalArgumentException("a or b is less than 1");
        }
        int remainder = 0;
        do {
            remainder = a % b;
            a = b; 
            b = remainder;
        } while (b != 0);
        return a;
    }
/**
 * Nejmensi spolecny nasobek cisel "a" a "b"
 * @param a cislo "a"
 * @param b cislo "b"
 * @return lcm(a, b)
 * @autor Thomas (www.adamjak.net)
 */
public static int lcm(int a, int b)
{
    if (a == 0 || b == 0)
    {
        return 0;
    }
    return (a * b) / gcd(a, b);
}
/**
 * Nejvetsi spolecny delitel cisel "a" a "b"
 * @param a cislo "a"
 * @param b cislo "b"
 * @return gcd(a, b)
 * @autor Thomas (www.adamjak.net)
 */
public static int gcd(int a, int b)
{
    if (a < 1 || b < 1)
    {
        throw new ArgumentException("a or b is less than 1");
    }
    int r = 0;
    do
    {
        r = a % b;
        a = b;
        b = r;
    } while (b != 0);
    return a;
}
/**
 * Nejmensi spolecny nasobek cisel "a" a "b"
 * @param $a cislo "a"
 * @param $b cislo "b"
 * @return lcm(a, b)
 * @autor Thomas (www.adamjak.net)
 */
function lcm($a, $b) {
    if ($a == 0 || $b == 0) {
        return 0;
    }
    return ($a * $b) / gcd($a, $b);
}
/**
 * Nejvetsi spolecny delitel cisel "a" a "b"
 * @param $a cislo "a"
 * @param $b cislo "b"
 * @return gcd(a, b)
 * @autor Thomas (www.adamjak.net)
 */
function gcd($a, $b) {
    if ($a < 1 || $b < 1) {
        die("a or b is less than 1");
    }
    $r = 0;
    do {
        $r = $a % $b;
        $a = $b;
        $b = $r;
    } while ($b != 0);
    return $a;
}
Literatura
- POLÁK, Josef. Přehled středoškolské matematiky. 8. vydání. Praha 4 : Prometheus, 2005. 608 s.