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