Najmniejsza wspólna wielokrotność

Wspólna wielokrotność liczb naturalnych a i b jest to taka liczba c, która jest wielokrotnością liczby a i jest wielokrotnością liczby b, czyli istnieją takie liczby k, l należące do zbioru liczb naturalnych, że c=k⋅a, i c=l⋅b.

Najmniejsza wspólna wielokrotność dwóch liczb jest to najmniejsza liczba różna od zera, która jest jednocześnie wielokrotnością obu liczb.

Najmniejszą wspólną wielokrotność liczb a i b zapisujemy nww(a,b) lub NWW(a,b).

W przypadku niewielkich liczb, najmniejszą wspólną wielokrotność można znaleźć wypisując wielokrotności danych liczb, metoda ta jednak uciążliwa jest dla większych liczb. W tej sytuacji rozkładamy liczby na czynniki pierwsze. W rozkładzie drugiej liczby wykreślamy (o ile istnieją) wspólne czynniki. Iloczyn wszystkich nieskreślonych czynników obu liczb jest najmniejszą wspólną wielokrotnością tych liczb.





Przykład
nww(20,30)=?
Rozkładamy liczbę 20 i liczbę 30 na czynniki pierwsze:
20=2⋅2⋅5
30=2⋅3⋅5
W rozkładzie liczby 30 wykreślamy czynniki: 2 i 5, ponieważ występują one w rozkładzie liczby 20.
Iloczyn pozostałych nieskreślonych czynników równy jest nww.
2⋅2⋅5⋅3=60
nww(20,30)=60

#include <iostream>
#include <cstdlib>
#include <cstring>


//NWW

using namespace std;
 
int main()
{
    int a,b; //deklaracja 2 integerowych zmiennych
    int pom_a,pom_b; //zmienne pomocnicze, do przechowywania pierwotnych wartości
    cin >> a >> b; //podawanie ich wartości
    pom_a=a;
    pom_b=b;
    
    if(a == b) //Jeżeli liczby a i b są równe, wtedy ich NWW będzie równe liczbie a (może również to być b)
    {
         cout << "NWW dla " << pom_a << " oraz " << pom_b << " wynosi: " << a;
    }
    else //W przeciwnym razie jeżeli a<b wtedy do a dodaj, jej wartość początkową, zaś jeżeli b<a, sytuacja analogiczna
    {
        do
        {
              if(a < b)
              {
                   a=a+pom_a;
              }
              if(b < a)
              {
                   b=b+pom_b;
              }
        }
        while(a != b); //pętla kończy się gdy a jest równe b (w kodzie: powtarzaj póki a różne od b)
    } 
    cout << "NWW dla " << pom_a << " oraz " << pom_b << " wynosi: " << a << endl;  //Wypisz na ekranie składowe, oraz NWW.
    system("pause"); //zatrzymanie programu i oczekiwanie na klawisz (WINDOWS!)
    return 0; //zwrócenie wartości 0, po wykonaniu programu
}