- /************************************************************************
- ** **
- ** © Faibbus H. Team **
- ** Mercredi 2o Février 2oo8 **
- *************************************************************************/
- #include <iostream>
- #include <fstream>
- #define NBR_DIV_MAX 50
-
- using namespace std;
-
- int main()
- {
- ofstream fichier("sortie.txt"); // Fichier de sortie
- int oOoOo=1; // variable permettant de savoir si on doit arrêter le programme
- unsigned long long produit; // Nombre à factoriser
- unsigned long long diviseurs[NBR_DIV_MAX][2]; // tableau contenant les facteurs premiers et leur multiplicité
-
- for(int i=1;i<NBR_DIV_MAX;i++) // on initialise le tableau, pour faire bonne mesure ^^
- {
- diviseurs[i][0]=1;
- diviseurs[i][1]=0;
- }
-
- fichier << "*** Nouvelle session ***"; // ça sert à rien mais bon ^^
-
- while(oOoOo)
- {
- system("clear"); // Si vous avez window$$, c'est system("cls"); beurk
- cout << "Faibbus H.Team is proud to present his\n\n\t\t\t\tFaKtoR PrOgRaMmE...\n\n Nombre à factoriser ?" << endl;
- fichier << "\n";
- cin >> produit; // On récupère le nombre à factoriser
- unsigned long long reste=produit, impair=2; // impair va passer succésivement les nombres impairs...
- int cpt=1, exp=0;
-
- while((reste>1)&&(reste>=impair*impair)) // On boucle tant que le reste n'est pas premier
- {
- if (!(reste%impair)) // Si on peut diviser reste par impair
- {
- diviseurs[cpt][0]=impair;
- while(!(reste%impair)) // Ben on le divise :D
- {
- exp++; // Au passage, on tient compte de la multiplicité du facteur, ça peut servir...
- reste=reste/impair;
- }
- diviseurs[cpt][1]=exp;
- exp=0;
- cpt++;
- }
- if(impair==2){ impair--; } // ça par contre, c'est moche mais bon...
- impair+=2;
- }
- cout <<" " << produit << "= 1"; // Les lignes en dessous ne servent qu'à mettre en forme l'affichage
- fichier << produit << "= 1";
- for (int i=1;i<cpt;i++)
- {
- cout << "x"<< diviseurs[i][0] ;
- fichier << "x"<< diviseurs[i][0] ;
- if(diviseurs[i][1]-1)
- {
- cout<< "^" << diviseurs[i][1];
- fichier<< "^" << diviseurs[i][1];}
- }
- if (reste!=1)
- {
- cout << "×" << reste;
- fichier << "×" << reste; }
- cout << "\n\n\n\n\t Continuer (0=quitter) ?\n\t\t "; // ça vous a plus ? ben on rejoue...
- cin >> oOoOo;
- }
- return 0;
- }
-
- // © Faibbus H. Team, all rights Left...
/************************************************************************
** **
** © Faibbus H. Team **
** Mercredi 2o Février 2oo8 **
*************************************************************************/
#include <iostream>
#include <fstream>
#define NBR_DIV_MAX 50
using namespace std;
int main()
{
ofstream fichier("sortie.txt"); // Fichier de sortie
int oOoOo=1; // variable permettant de savoir si on doit arrêter le programme
unsigned long long produit; // Nombre à factoriser
unsigned long long diviseurs[NBR_DIV_MAX][2]; // tableau contenant les facteurs premiers et leur multiplicité
for(int i=1;i<NBR_DIV_MAX;i++) // on initialise le tableau, pour faire bonne mesure ^^
{
diviseurs[i][0]=1;
diviseurs[i][1]=0;
}
fichier << "*** Nouvelle session ***"; // ça sert à rien mais bon ^^
while(oOoOo)
{
system("clear"); // Si vous avez window$$, c'est system("cls"); beurk
cout << "Faibbus H.Team is proud to present his\n\n\t\t\t\tFaKtoR PrOgRaMmE...\n\n Nombre à factoriser ?" << endl;
fichier << "\n";
cin >> produit; // On récupère le nombre à factoriser
unsigned long long reste=produit, impair=2; // impair va passer succésivement les nombres impairs...
int cpt=1, exp=0;
while((reste>1)&&(reste>=impair*impair)) // On boucle tant que le reste n'est pas premier
{
if (!(reste%impair)) // Si on peut diviser reste par impair
{
diviseurs[cpt][0]=impair;
while(!(reste%impair)) // Ben on le divise :D
{
exp++; // Au passage, on tient compte de la multiplicité du facteur, ça peut servir...
reste=reste/impair;
}
diviseurs[cpt][1]=exp;
exp=0;
cpt++;
}
if(impair==2){ impair--; } // ça par contre, c'est moche mais bon...
impair+=2;
}
cout <<" " << produit << "= 1"; // Les lignes en dessous ne servent qu'à mettre en forme l'affichage
fichier << produit << "= 1";
for (int i=1;i<cpt;i++)
{
cout << "x"<< diviseurs[i][0] ;
fichier << "x"<< diviseurs[i][0] ;
if(diviseurs[i][1]-1)
{
cout<< "^" << diviseurs[i][1];
fichier<< "^" << diviseurs[i][1];}
}
if (reste!=1)
{
cout << "×" << reste;
fichier << "×" << reste; }
cout << "\n\n\n\n\t Continuer (0=quitter) ?\n\t\t "; // ça vous a plus ? ben on rejoue...
cin >> oOoOo;
}
return 0;
}
// © Faibbus H. Team, all rights Left...