Langage C
  Solution CF 2007
 

Solution

#include <stdio.h>

#include <stdlib.h>

#include <math.h>

 

 

unsigned int longueur (unsigned int n)

{

 if (n<10) return 1 ; //n est constitué d'un seul chiffre donc on peut décider : 
                               //le cas trivial

 else return 1 + longueur(n/10)  ; //n est constitue de plus d'un chiffre : 
                                                     //appel recursif de la fonction longueur

}

 

void decompose( unsigned int M , unsigned int  n , unsigned int  * M1 , unsigned int  * M2 )

{  unsigned int i,_10_puiss_n=1;

 

   for(i=0;i<n;i++)

     _10_puiss_n*=10;  //Calcul de 10^n

 

   *M1 = M%_10_puiss_n ; //calcul du nombre M1

   *M2 = M/_10_puiss_n ; //calcul du nombre M2

}

unsigned int Kaprekar ( unsigned int  nbre)

{   unsigned int M1 , M2 ;

 

   decompose( nbre*nbre , longueur(nbre) , &M1 , &M2 );

   return ( nbre == (M1+M2)  ) ;

}

 

int main()

{  unsigned int T[1000] , i , j ;

 

 for( i = 0 , j = 0 ; i<1000 ; i++)

    if ( Kaprekar( i ) ) { T[j] = i ; j++ ;}

printf("nLes nombres de Kaprekar  impairs <1000 sont : ") ;

for( i = 0 ; i<j ; i++)

  if(T[i]%2) printf("t%d",T[i]) ;

 

printf("n") ;

  system ("pause");

  return 0;

}

 
  Aujourd'hui sont déjà 1 visiteurs (15 hits) Ici!  
 
Ce site web a été créé gratuitement avec Ma-page.fr. Tu veux aussi ton propre site web ?
S'inscrire gratuitement