el apmersand sirve para obtener la dirección de memoria. Lo que ves es eso y no el dato que hay en él, es decir, el número de cifras de cada número. Quita & y listo.
No sé si debes sacar el factor común de los números porque te lo pide el ejercicio, pero si no es así usa el algoritmo de Euclides. Este algoritmo es fácil de implementar para un ordenador y con muy poco código da la solución.
Te diría que uses la función qsort para ordenar. Es un poco difícil de usar si eres nuevo en el lenguaje pues usa punteros a void y un puntero a función, pero no es muy complicada si buscas unos cuantos ejemplos y buscas documentación simplificada de ella.
Lo que podrías hacer es crear un puntero (de una dimensión) a la tabla y ordenarla mediante qsort de menor a mayor.
Una vez tienes la tabla ordenada usar de nuevo qsort, pasándole una función de orden inversa, vas ordenando las líneas impares de la tabla; las pares ya estarán ordenadas por el paso anterior.
Cuándo se termine ya tendrás la tabla ordenada según tu criterio.