Diviseurs.cpp
#include <iostream.h>
#include <math.h>

const unsigned MaxDiviseurs = 50;
//------------------------------------------------------------------------------
struct Diviseurs
{
  unsigned suite[MaxDiviseurs];
  unsigned nombre;
};
//------------------------------------------------------------------------------
void rechercheDiviseurs(unsigned x, Diviseurs &diviseurs)
{
  for (unsigned int i = x-1; i >= sqrt(x); i--) {
    int resultat = x/i;
    if (resultat*i == x) {
      diviseurs.suite[diviseurs.nombre++] = resultat;
      rechercheDiviseurs(i, diviseurs);
      return;
    }
  }
  diviseurs.suite[diviseurs.nombre++] = x;
}
//------------------------------------------------------------------------------
int main( )
{
  Diviseurs diviseurs;
  unsigned nombre;
  char continuer;
  do {
    diviseurs.nombre = 0;
    cout << "Votre nombre : ";
    cin >> nombre;
    rechercheDiviseurs(nombre, diviseurs);

    if (diviseurs.nombre == 1) cout << "Nombre premier";
    else {
      cout << "Le nombre comporte des diviseurs : ";
      for (unsigned i=0; i<diviseurs.nombre; i++)
        cout << diviseurs.suite[i] << ' ';
    }
    cout << endl << "Désirez-vous continuez ? ";
    cin >> continuer;
  }
  while (continuer=='o' || continuer=='O');
  return 0;
}
//------------------------------------------------------------------------------
Diviseurs.cpp