#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;
}
//------------------------------------------------------------------------------