/*************************************************************************************************************************************/
/*                                                                                                                                   */
/*        F A C T O R I S A T I O N   D E S   N O M B R E S   E N T I E R S  :                                                       */
/*                                                                                                                                   */
/*                                                                                                                                   */
/*        Author of '$xtc/factorisation.01$c' :                                                                                      */
/*                                                                                                                                   */
/*                    Jean-Francois Colonna (LACTAMME, 20220331120632).                                                              */
/*                                                                                                                                   */
/*************************************************************************************************************************************/

#include  <stdio.h>

#define   NOMBRE                                                                                                                        \
                    200                                                                                                                 \
                                        /* Nombre de nombres premiers a calculer...                                                  */
#define   STORE(n)                                                                                                                      \
                    {                                                                                                                   \
                    ListeDesNombresPremiers[IndexDesNombresPremiers]=n;                                                                 \
                    IndexDesNombresPremiers++;                                                                                          \
                    }

main()
          {
          int       IndexDesNombresPremiers=0;
          int       ListeDesNombresPremiers[NOMBRE];
          int       NombreEntierCourant;

          STORE(2);
          NombreEntierCourant=ListeDesNombresPremiers[IndexDesNombresPremiers-1]+1;

          while     (IndexDesNombresPremiers <= NOMBRE)
                    {
                    int       index;
                    int       EstPremier=0;

                    for       (index=0 ; index<=IndexDesNombresPremiers-1 ; index++)
                              {
                              if        ((NombreEntierCourant % ListeDesNombresPremiers[index]) == 0)
                                        {
                                        EstPremier=1;
                                        }
                              else
                                        {
                                        }
                              }

                    if        (EstPremier == 0)
                              {
                              STORE(NombreEntierCourant);
                              }
                    else
                              {
                              }

                    NombreEntierCourant=NombreEntierCourant+2;
                    }

          IndexDesNombresPremiers--;

          for       (NombreEntierCourant=2 ; NombreEntierCourant <= NOMBRE ; NombreEntierCourant++)
                    {
                    int       index;
                    int       quotient=NombreEntierCourant;
                    int       NombreTotalFacteursPremiers=0;
                    int       NombreFacteursPremiersDifferents=0;

                    printf("%d = ",NombreEntierCourant);

                    for       (index=0 ; index <= IndexDesNombresPremiers ; index++)
                              {
                              int       exposant=0;

                              if        (quotient >= ListeDesNombresPremiers[index])
                                        {
                                        while     ((quotient % ListeDesNombresPremiers[index]) == 0)
                                                  {
                                                  if        (exposant == 0)
                                                            {
                                                            if        (NombreTotalFacteursPremiers > 0)
                                                                      {
                                                                      printf("x");
                                                                      }
                                                            else
                                                                      {
                                                                      }

                                                            printf("(%d",ListeDesNombresPremiers[index]);
                                                            NombreFacteursPremiersDifferents++;
                                                            }
                                                  else
                                                            {
                                                            }

                                                  quotient = quotient / ListeDesNombresPremiers[index];
                                                  NombreTotalFacteursPremiers++;
                                                  exposant++;
                                                  }

                                        if        (exposant > 0)
                                                  {

                                                  if        (exposant > 1)
                                                            {
                                                            printf("^%d",exposant);
                                                            }
                                                  else
                                                            {
                                                            }

                                                  printf(")");
                                                  }
                                        else
                                                  {
                                                  }
                                        }
                              else
                                        {
                                        }

                              }

                    printf("\t\t#[%d,%d]\n",NombreTotalFacteursPremiers,NombreFacteursPremiersDifferents);
                    }
          }



Copyright © Jean-François Colonna, 2022-2023.
Copyright © CMAP (Centre de Mathématiques APpliquées) UMR CNRS 7641 / École polytechnique, Institut Polytechnique de Paris, 2022-2023.