begin process at 2010 02 10 07:24:44
  Trouver un code source :
 
dans
 
Accueil > Forum > 

JAVA / J2EE / J2ME

 > 

Algorithme

 > 

Maths

 > 

Division de grands nombres


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Division de grands nombres

samedi 10 novembre 2007 à 14:49:57 | Division de grands nombres

yopyoopyop

Bonjour à tous,
J'ai besoin de trouver un algorithme mieux optimisé pour pouvoir diviser un nombre par un autre. Les nombres sont contenu dans des tableaux où chaque cellule contient un chiffre (ex.: 123 = {1,2,3}). Voici le mien, qui est vraiment très lent... :

public static int[] hugeDiv(int []n1 , int[] n2 ){
    int[]zero = new int[1];
    zero[0]=0;
    int[] un = new int[1];
    un[0]=1;
    if(isEqual(n1,n2) == true) return un;
    if(isSmaller(n1,n2) == true) return zero;

    int[] resultat = new int[n1.length];
    int[] tmp;
    int[] n2foisj;

    for(int i=0;i<resultat.length;i++){
        n2foisj = hugeCopy(zero);
        tmp = hugeGetPart(n1,i+1);
        for(int j=0;isSmaller(n2foisj,tmp)==true;j++){
            resultat[i] = j;
            n2foisj = hugeMultDigit(n2,j+1);
            if(n2foisj==null) n2foisj = hugeCopy(zero);
        }
        resultat[i] = resultat[i]%10;
        tmp = hugeSub(tmp,n2foisj);
    }
    return resultat;
}

toutes les autres fonctions marchent impécablement(hugeMult=*,hugeSub=-,hugeGetPart([],i)=retourne les i premiers digits du tableau []).

Merci d'Avance =D
samedi 10 novembre 2007 à 22:32:04 | Re : Division de grands nombres

Ombitious_Developper

Salut:

Je me rappelle dans mes études en particulier la matière d'architecture des microprocesseurs il y a plusieurs alogorithmes pour faire la division et les autres opérations arithmétiques.

Cherches l'algorithme qui te convient.
samedi 10 novembre 2007 à 23:42:55 | Re : Division de grands nombres

yopyoopyop

Merci d'avance Ombitious =D

dimanche 11 novembre 2007 à 13:50:44 | Re : Division de grands nombres

z bozzo

Salut,

tu devrais convertir tes nombres en hexadecimal et en suite faire ta division, ca devrai pouvoir accelerer ton algo




  .oO BOZZO Oo.

dimanche 11 novembre 2007 à 14:07:54 | Re : Division de grands nombres

z bozzo

re-Salut,

sinon :

123456789987654321        123456789                                     987654321
------------------------- = ---------------- * 1000000000  + -------------------
98765421                             98765421                                      98765421

et ainsi de suite ...

avec cette methode tu peut découper tes nombres de maniere a laisser le circuit de calcul du proccesseur faire les divisions et ensuite faire les multiplications et additions pour trouver ton resutat.

       256      2                 5               6
ex : ----- = --- * 100 + --- * 10 + --- = 40 + 10 + 0.11 = 51.2
         5        5                 5               5



  .oO BOZZO Oo.

dimanche 11 novembre 2007 à 15:23:03 | Re : Division de grands nombres

yopyoopyop

Effectivement Bozzo, je n'y avais pas pensé... merci bien pour cette astuce xD
mardi 1 avril 2008 à 15:12:06 | Re : Division de grands nombres

jojolemariole

Sinon, pour info, il existe les BigInteger, qui fonctionnent très bien.

division entiere :
[code]
BigInteger a = new BigInteger("123456789123456789123456789123456789");
BigInteger b = new BigInteger("123456789123456789123456789123456789");
BigInteger c = a.divide(b);
[/code]

division avec reste :
[code]
BigInteger a = new BigInteger("123456789123456789123456789123456789");
BigInteger b = new BigInteger("123456789123456789123456789123456789");
BigInteger[] result = a.divideAndRemainder(b);
BigInteger d = result[0];
BigInteger r = result[1];
[/code]

Cependant je doute qu'ils soient extrêmement optimisés, en particulier ils sont immuables, comme les String.


Cette discussion est classée dans : int, resultat, n1, zero, n2foisj


Répondre à ce message

Sujets en rapport avec ce message

c quoi ca ? Dereferenced [ par colruyt ] J'ai ceci comme message : int cannot be dereferencedString test=reponse.getText();Integer ger = new Integer(test);int i = ger.intValue();while(resulta faute inaperçue [ par TSI3ISSAT ] ce programme n'affiche que 1pour quoi? int fact(int n){  int i,P=1;  for(i=n;i>0;i--)  P=P*i;  return P;  }  double pow(double x, int n)   { int i;    mon programme affiche aucun resultat [ par domxaline ] Bonjour, comme le titre dit,mon prg affiche aucun resultat public class Sansimport { public static void main(String []args) { int n = 0; int affichage de contenu d'une arrayList() qui contient un ResultSet [ par fatimaezzahra89 ] je veux stocker un resultset dans une arraylist pui afficher le contenu de cette arraylist voilà le code que j'ai fais mail il me donne une exception [STRUCTURE] Comment on fait ? [ par Ilsundal ] Bonjour a tous, ca fait maintenant 3ans 1/2 que je code en c/c++ et je commence le JAVA, j'aimerais savoir comment ca fonctionne pour les structure ! Operation not allowed after ResultSet closed [ par Taz1984 ] Bonjour, J'ai une table nomée fichiercomplet, j'ai besoin de copier certains champs de cette table vers la table table_transaction_journal. Pour cel probleme d'insertion dans un tableau [ par maxxou56 ] Bonjour tout le monde je suis debutant en programmation mon problème est minime en fait je voudrais faire une insertion dans un tableau mais jai un pe ajouter des entiers dans un tableau a trier dans un ordre croissant [ par maxxou56 ] Bonjour à tous, je souhaiterais ajouter dans un tableau des entiers. Le tableau est triés par ordre croissant. Ainsi pour chaque ajout il me faut trou Lever une Exception IllegalArgumentException [ par raphaelharboun ] Bonjour a tous, J'ai un leger soucis avec les exception en java J'ai un constructeur qui prend en parametre un int, j'aimerais pouvoir lever une exce jeu de Blackjack en java [ par scoubida42 ] Salut à tous, Dans le cadre d'un cours d'informatique que je suis dans le cadre de mes études, je dois réaliser un jeu de blackjack. ayant commencé l


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,718 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales