Une manière simple de résoudre le problème consisterait à faire, pour chaque nombre compris entre 2 et 5040, le test avec tous les nombres inférieurs. Mais cette méthode est coûteuse.

Pour simplifier le problème si l'on a parcouru l'ensemble des diviseurs potentiels jusqu'à la racine du nombre on a trouvé tous les diviseurs.
Ainsi pour le nombre 100, 1 donne 100, 2 donne 50, 4 donne 25, 5 donne 20 et 10 donne 10.

Pour comptabiliser les diviseurs d'un nombre, il suffit de parcourir l'ensemble des diviseurs potentiel jusqu'à la racine carrée du nombre et d'incrémenter de deux le compteur des diviseurs à chaque fois que l'on en trouve un.
Un problème apparaît quand le nombre à tester est un carré parfait, dans l'exemple précédent on aurait compté deux fois le diviseur 10. Il suffit d'ajouter un test qui prend ceci en compte.

L'opération racine carrée n'existe pas en C, il faut appeler la fonction sqrt (voir man sqrt pour les arguments et leur types).
N'oubliez pas de lier avec la bibliothèque libm.a.