Nombres de KEITH | Repfigits en langage c







 les-nombres-de-KEITH-|-Repfigits



C'est Michael KEITH qui a defini ces nombres en 1987, Ces nombres de KEITH sont aussi apples les Repfigits,(mot obtenu a partir de la contraction des mots repetitive Fibonacci-like digit.







Code source :


///Auteur : Mohamed Karara
#include <stdio.h>
#include <stdlib.h>

int nob_de_chef(int nbre)
{
    int m;
    if(nbre>=10&&nbre<100)m=2;
    else if(nbre>=100&&nbre<1000)m=3;
    else if(nbre>=1000&&nbre<10000)m=4;
    return m;
}
void ch_to_nob(int nbre,int *t,int m)
{
    int i;
    for(i=m-1;i>=0;i--)
    {
        t[i]=nbre%10;
        nbre/=10;
    }

}
void aff(int nbre,int *p,int n)
{
    int i,s;
    ///AJOUT
      printf("%d :",nbre);
     for(i=0;i<n;i++)
      {
        printf("%d  ",p[i]);
      }
    ////////////////////////////
    do
    {
        s=0;
      for(i=0;i<n;i++)
      {
          s+=p[i];
      }
      //AND
       printf("%d ",s);
      for(i=0;i<n-1;i++)
      {
          p[i]=p[i+1];
          p[i+1]=s;
      }
    }while(s<nbre);
    printf("\n");
}
int somme(int nbre,int *p,int n)
{
    int i,s;
    do
    {
        s=0;
      for(i=0;i<n;i++)
      {
          s+=p[i];
      }
      for(i=0;i<n-1;i++)
      {
          p[i]=p[i+1];
          p[i+1]=s;
      }

    }while(s<nbre);
   /// printf("%d\n",s);
    if(s==nbre)
            return 1;


    return 0;
}
void setnobre()
{
    int nbre[10],i,j,n,m;
    do
    {
    printf("Nombre de Chiffre (2,3,4) :");
    scanf("%d",&n);
    }
    while(n<2||n>4);
    switch(n)
    {
        case 2:m=100;
        break;
        case 3:m=1000;
        break;
        case 4:m=10000;
    }
    for(i=10;i<m;i++)
    {
        ch_to_nob(i,nbre,nob_de_chef(i));
        if(somme(i,nbre,nob_de_chef(i)))
        {
          ///  printf("%d\n",i);
          ch_to_nob(i,nbre,nob_de_chef(i));
           aff(i,nbre,nob_de_chef(i));
        }
    }
}

int main()
{
setnobre();
    return 0;
}