IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

avec Java Discussion :

Calculer la racine carrée d'un nombre d'une façon particulière


Sujet :

avec Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 102
    Points : 44
    Points
    44
    Par défaut Calculer la racine carrée d'un nombre d'une façon particulière
    Bonjour,

    Je dois trouver la racine carrée d'un nombre, mais pas avec Math.sqrt ou d'autres façons.
    La methode que je dois utiliser est basé sur ce tableau:

    Code:
    CARRÉE 0 1 2 3 4 5 6 7 8 9 10 .. 15 16 17 .. 24 25 26 27
    RACINE 0 1 1 1 2 2 2 2 2 3 3 .. 3 4 4 .. 4 5 5 5


    Qui est sur wikipédia après le milieu de la page : http://fr.wikipedia.org/wiki/Racine_carr%C3%A9e
    J'ai remarqué le zéro se répète une seule fois, le un trois fois, le trois cinq fois ... 2n-1 fois globalement.

    ça fait plusieurs jours que j'essaie de trouver l'algorithme de ce tableau, mais je n'ai rien trouvé. Je demande donc votre aide pour essayer de voir les choses plus clairement.

    Merci pour votre aide

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    294
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 294
    Points : 268
    Points
    268
    Par défaut
    Tu as la formule sous le tableau:
    D'apres cette ligne tu peux recuperer la racine entiere du nombre que tu cherches:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ((a+1)^2-a^2-1)/2= la racine entiere que tu recherches
    Vu que tu ne peux pas faire ^2, utilise la multiplication.

  3. #3
    Membre expérimenté Avatar de Ivelios
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2008
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 031
    Points : 1 540
    Points
    1 540
    Par défaut
    Bonjour,

    Tu as besoin de 4 entiers :
    n = le carré
    racine = 1-2-3-4-5-6-7-8-...
    impair = 3-5-7-9-11-13-15-...
    sommeImpair = 3-8-15-24-35-48-...

    1/ tu fais un cas particulier si n =0
    2/ tu initialise racine, impair et sommeImpair
    3/ tu fait une boucle tant que sommeImpair<n
    3 bis/ dans la boucle tu modifie les valeurs de racine, impair et sommeImpair
    4/Sortie de boucle, tu retournes racine.

    Voila

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    294
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 294
    Points : 268
    Points
    268
    Par défaut
    L'inconvéniant de ton code est qu'il doit initialiser des variables. Si il a besoin de la racine de 1.000.000, je pense pas qu'il aura la réponse.

    Avec la formule donnée précédement, il lui suffit de connaitre le chiffre dont il veut la racine.

  5. #5
    Membre expérimenté Avatar de Ivelios
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2008
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 031
    Points : 1 540
    Points
    1 540
    Par défaut
    L'inconvéniant de ton code est qu'il doit initialiser des variables.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    int racine = 1;
    int impair = 3;
    int sommeImpair = 3;
     
    //Boucle
    //...
    Je ne vois pas en quoi c'est un inconvénient

    Si il a besoin de la racine de 1.000.000, je pense pas qu'il aura la réponse.
    Bâ... si il fera 999 tours dans la boucle (normal vu que 1000 c'est la racine carré)
    Avec la formule donnée précédement, il lui suffit de connaitre le chiffre dont il veut la racine.
    C'est surement vrai, mais je n'ai pas réussi à utiliser la réponse que tu as donné(Je sais, je suis pas doué ), donc j'ai fais ma propre version. Si tu veux m'expliquer(ré expliquer par contre je suis ouvert

  6. #6
    Membre actif
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    294
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 294
    Points : 268
    Points
    268
    Par défaut
    Oups c'est moi qui fait l'erreur. Je me suis trompé dans mes calculs. Il ne faut pas procéder de la maniere que j'ai expliquer plus haut. Mais on peut quand meme utiliser la formule car elle nous apprend que :
    Le nombre de fois que l’entier n est répété est le n-ième entier impair.
    Il doit etre possible d'utiliser ceci dans une boucle.

  7. #7
    Membre expérimenté Avatar de Ivelios
    Homme Profil pro
    Développeur Java
    Inscrit en
    Juillet 2008
    Messages
    1 031
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 031
    Points : 1 540
    Points
    1 540
    Par défaut
    En faite, je peux optimiser un peu mon code :
    Suppression de Impair et SommeImpair. Mais on garde Racine

    Et pour la condition 3/ tu fait une boucle tant que sommeImpair<n,
    on remplace par 3/ tu fait une boucle tant que ((racine+1)^2) -1<n

    ça évite de ce trimballer 3 ints

  8. #8
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    avec les flottants 16 bits, il y avait aussi cette formule d'approximation pour 1/sqrt(x) , utilisée par le code de quake III Y a surement moyen de la retourner

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    float Q_rsqrt( float number )
    {
      long i;
      float x2, y;
      const float threehalfs = 1.5F;
     
      x2 = number * 0.5F;
      y  = number;
      i  = * ( long * ) &y;  // evil floating point bit level hacking
      i  = 0x5f3759df - ( i >> 1 ); // what the fuck?
      y  = * ( float * ) &i;
      y  = y * ( threehalfs - ( x2 * y * y ) )
    }

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    102
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 102
    Points : 44
    Points
    44
    Par défaut
    Merci beaucoup pour vos réponses, j'ai finalement trouvé ce que je cherchais

Discussions similaires

  1. Calcul de la racine carrée d'un nombre
    Par Anomaly dans le forum Télécharger
    Réponses: 3
    Dernier message: 04/11/2013, 23h16
  2. Nombre premiers et calculer la racine carrée d'un nombre
    Par Roud9 dans le forum Débuter avec Java
    Réponses: 19
    Dernier message: 21/09/2010, 17h55
  3. Calculer la racine quelconque d'un nombre
    Par badkiller3100 dans le forum Langage
    Réponses: 5
    Dernier message: 12/09/2007, 17h51
  4. Réponses: 2
    Dernier message: 17/02/2007, 05h43
  5. la racine carré d'un nombre
    Par aziz jim dans le forum C++
    Réponses: 4
    Dernier message: 07/08/2006, 14h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo