Trouver le nombre X

mustaphase Messages postés 2 Date d'inscription mardi 29 juin 2010 Statut Membre Dernière intervention 30 juin 2010 - 29 juin 2010 à 14:59
manudiclemente Messages postés 14 Date d'inscription vendredi 14 mai 2010 Statut Membre Dernière intervention 9 mars 2011 - 2 juil. 2010 à 05:08
bonjour les amis ,
je viens de résoudre une énigme mathématique qui dit :

Trouver le Nombre X , composé de 87 chiffres , et divisible par 2^87 , et il est composé juste par les chiffres 8 et 7, ( les 87 chiffres sont des 8 ou des 7 ).

Alors j'ai trouvé l'idée , on va cherché le nombre X en procédant comme suit:
*Le nombre composé de 1 chiffre à droite doit être divisible par 2^1 alors c'est 8.
*Le nombre composé de 2 chiffres à droite doit être divisible par 2^2 alors c'est 88.
*Le nombre composé de 3 chiffre à droite doit être divisible par 2^3 alors c'est 888.
*Le nombre composé de 4 chiffre à droite doit être divisible par 2^4 alors c'est 7888. ( Jusque ici on a trouvé les 4 derniers chiffres du X)
.....
Jusqu'au nombre X composé de 87 chiffres.

Le problème c'est que c'est pas facile à la main ... alors j'ai besoin d'un programme qui me donne le résultat , j'ai essayé avec le programme au dessus mais ca marche pas , Vous pouvez m'aider SVP ... SVP ... et Merci d'avance...
je suis débutant , j'utilise CodeBlocks et comme vous voyez c'est un code très très basique

Voila le Code:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>

int main(int argc, char *argv[])
{

  int  T[86]={0};
  int y,i;
  int x=8;



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

        {

            T[i]=8;
            y=pow(2,i+1);
            if (x%y==0)

                    {
                        T[i]=8;
                    }
            else
                    {
                         T[i]=7;
                    }



                        x=x+(T[i]*pow(10,i+1));

                        printf(" %d \n",x);

        }

         printf("\n\nle nombre est :");

        for (i=86;i>=0;i--)
            {
                printf("%d",T[i]);
            }

          printf("\n\n");

  return 0;
}


Merciiiiii

5 réponses

cs_louis14 Messages postés 793 Date d'inscription mardi 8 juillet 2003 Statut Membre Dernière intervention 10 février 2021 8
30 juin 2010 à 08:45
Je ne comprend pas le nombre est composé de 87 chiffres et il soit être divisible par 2^87 ( 2^87 a plus de 87 chiffres).



louis
0
mustaphase Messages postés 2 Date d'inscription mardi 29 juin 2010 Statut Membre Dernière intervention 30 juin 2010
30 juin 2010 à 13:26
Merci Louis

mais , 2^87=154742504910672534362390528

cad il a 27 chiffres seulement

cordia..
0
cs_louis14 Messages postés 793 Date d'inscription mardi 8 juillet 2003 Statut Membre Dernière intervention 10 février 2021 8
1 juil. 2010 à 08:57
Pardon pour la remarque.
Dans ce cas il faut passer par une classe qui gère les grands nombres car int ou long ont une valeur max qui est inférieure à un nombre de 87 chiffres ( j'ai essayé 2^87 avec pow et j'ai 0 comme résultat).
A la place de pow utilise (*2). et forme ton nombre avec : ancien*10 + (8 ou 7).
Il y a une classe de ce type sur ce site ou bien google est ton ami.

louis
0
mad_love_disease Messages postés 64 Date d'inscription lundi 20 octobre 2003 Statut Membre Dernière intervention 1 juillet 2010 3
1 juil. 2010 à 10:43
Tout à fait louis!

unsigned long int est codé sur 32 ou 64 bits selon ta machine donc le maximum que tu peux obtenir est 2^32 ou 2^64

Mais le problème ici est de trouver un nombre ayant une relation de multiple/diviseur dans deux bases différentes (base 2 pour les diviseurs, base 10 pour les chiffres) Peut etre qu'il existe une manière analytique et non algorithmique pour résoudre ce problème.

Sinon, une classe pour les "grands entiers" comme l'a bien suggeré Louis!

Nico
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
manudiclemente Messages postés 14 Date d'inscription vendredi 14 mai 2010 Statut Membre Dernière intervention 9 mars 2011
2 juil. 2010 à 05:08
Boost offre des classes de grands entiers, je crois...

Sinon ma première idée serait :
- déterminer l'ordre de grandeur du facteur
- tenter de multiplier le nombre avec plusieurs facteurs
- traiter le nombre obtenu comme une chaine et comparer chaque "chiffre" à 8 et 7 pour vérifier...

long et moche

Faut demander au mathématiciens
0
Rejoignez-nous