Niestety, algorytm masz zły.
lcm(15, 236, 3217, 1234) = 7026507060
lcm(15421, 234126, 3213427, 1234223, 231341) = 473237144062940936529431658
long int nww(unsigned long long int a, unsigned long long int b){
unsigned long long int bb=b; unsigned long long int aa=a;
unsigned long long int c=0;
while (bb!=0){
c=aa%bb; aa=bb; bb=c;}
return((a*b)/aa);
}
Skąd wiesz, że a jest większa od b? Przykład:
15 % 9 =6
9 % 15 = 9
using namespace std;
Nie powinno się tego używać globalnie, tylko jak już co, to lokalnie w funkcji.
Operacja modulo jest chyba kosztowniejsza od odejmowania.
Na razie tyle.
EDYCJA
Tu masz szybszą metodę obliczania NWD:
http://en.wikipedia.org/wiki/Binary_GCD_algorithmFunkcję nww masz typu long int, a argumenty unsigned long long int. Uważasz, że wynik będzie mniejszy od argumentów?
W funkcji main brakuje return 0;.
@niżej, możliwe, nie byłem pewien.