Masz zrobić funkcję, którą potem podasz sort()'owi? To chyba powinno byc tak:
bool zmiensort(int a, int b) {
int ga = __gcd(a, 1260); // zapamiętujemy, żeby nie liczyć kilka razy
int gb = __gcd(b, 1260);
if(ga==gb) // jeśli są równe, to zwracamy czy a jest mniejsze od b, żeby posortować normalnie
return a<b;
return ga>gb; // w przeciwnym wypadku zwracamy czy ga jest większe od gb, żeby posortować niewzrastająco po NWD
/* lub:
if(ga>gb)
return true;
if(ga<gb)
return false;
if(ga==gb)
return a<b; // if(a<b) return true; else return false;
*/
}
Zasada zwracania jest taka, że jak a powinno być przed b, zwracamy true, w przeciwnym wypadku false.