problème de calcul sur 20 à 50 chiffres de ma formule sur les nombres premiers
Discussion fermée
Page 1 sur 2 1 DernièreDernière
Affichage des résultats 1 à 30 sur 52

problème de calcul sur 20 à 50 chiffres de ma formule sur les nombres premiers



  1. #1
    saniadaff

    problème de calcul sur 20 à 50 chiffres de ma formule sur les nombres premiers


    ------

    Bonjour!

    J'ai toujours un problème d’exécution du code de calcule de nombre premier;

    j'ai changé le type long en double mais ça ne fonctionne pas alors que pour 19 chiffres quand je remet le long tout est Ok;
    voici le code:

    Code:
    package Premier4;
    
    import java.util.*;
    
    
    public class Premier4 {
    
    	public static void main(String[] args) {
    		Premier4 P1 = new Premier4();
    		@SuppressWarnings("resource")
    		Scanner keby = new Scanner(System.in);
    
    		System.out.println("Veuillez saisir le rang inferieur n1 et superieur n2 :");
    		double s=keby.nextDouble();
    		double m=keby.nextDouble();
    		for (double x = s ; x <= m; x++) {
    
    		System.out.printf("P%d  : %d \n",+x, +P1.Formule2(x));
    
    		}
    
    		}
    		public long Div1 (double n) {	
    			
    		      int step;
    		       int i;
    
    			    if ( n < 5 ) {
    			    	 if ((n==2) || ( n==3)) {	    		 
    			    	
    			    		 return 1;
    			    	 }
    			    	 
    			    	 else {
    			    		 
    			    	
    			    		 return 2;
    			            
    			            }
    			    	 
    			          }
    			            else if (( n%6==0) || (n%6==2) || (n%6==4 )) {
    			                   
    			            	return 2;
    			            
    			            }  
    			            
    			            else if (n%6==3) {
    			                        
    			            	return 3;
    			                  
    			            }
    			                         else {
    			        i=5;
    			        step=2;
    			     while ( i*i <= n ) {
    			            
    			    	 if (n%i==0) {
    			    		 
    			    		 return i;
    			    	 }
    			    	else {
    			           
    			    		i=i+ step;
    			    	 
    			            if ( step==2) {
    			                step= 4;
    			         }
    			        else {
    			               
    			            	step=2;
    			            }
    			    	 }
    			     }
    			        return 1;
    			        
    			                         }
    			    }
    
    
    
    
    		public double Formule2 (double n){
    
    		double p=0;	
    		loop1:	
    		for(double j=n;j<=2*n;j++) {
    		n=j;	
    		int i=0;
    		double r=0;
    		double control = 2 * n + 1 ;
    		double Q = Div1(2 * n + 1);
    		double b = Q;
    		long sortie = 0;
    		ArrayList<Double> K= new ArrayList<Double> ();
    		K.add(control);
    
    
    
    		while ((Q!=1) && (sortie == 0)) {
    
    		b = Q ;
    		control=2 * n + Q;
    		Q = Div1(2 * n + Q);
    		r=K.size();
    		while (i<r) {
    
    		if (control== K.get(i) ) {
    
    		sortie = sortie + 1;
    
    		}
    
    		i=i+1;
    		}
    
    
    		K.add(2 * n + Q);
    
    		}
    
    
    		if ((Q==1) && (sortie == 0) ){	
    
    		p=2 * n + b;  break loop1;
    
    
    
    		}
    
    		    }
    
    		return p;
    
    		}
    
    
    
    
    
    
    
    
    
    
    
    }
    Merci d'avance;

    -----

  2. #2
    pm42

    Re : problème de calcul sur 20 à 50 chiffres de ma formule sur les nombres premiers

    Je n'ai pas le temps de regarder en détail mais tu connais les types BigInteger et BigDecimal en Java ?

  3. #3
    Paraboloide_Hyperbolique

    Re : problème de calcul sur 20 à 50 chiffres de ma formule sur les nombres premiers

    Bonjour,

    Je pense que cela vient d'erreurs d'arrondis avec l'opérateur "reste" ('%') lorsque l'on utilise le type 'double'. Voir là un problème similaire: https://stackoverflow.com/questions/...oubles-in-java

    La solution est effectivement celle proposée par pm42: utiliser un type plus adapté comme BigInteger ou BigDecimal.

  4. #4
    jiherve

    Re : problème de calcul sur 20 à 50 chiffres de ma formule sur les nombres premiers

    bonjour,
    lorsque les calculs portent sur des entiers il faut fuir les flottants comme la peste!
    l’inévitable :https://docs.oracle.com/cd/E19957-01..._goldberg.html
    JR
    l'électronique c'est pas du vaudou!

  5. A voir en vidéo sur Futura
  6. #5
    vgondr98

    Re : problème de calcul sur 20 à 50 chiffres de ma formule sur les nombres premiers

    Commence par changer
    public long Div1 (double n) {

    par

    public double Div1 (double n) { et aussi les autres long qui traîne dans ton code.

  7. #6
    saniadaff

    Re : problème de calcul sur 20 à 50 chiffres de ma formule sur les nombres premiers

    J'ai vérifié les double mais toujours c'est les mêmes problèmes;

    Je suis maintenant sur le code avec BigInteger mais c'est pas gagner car c'est mon premier essai: le while les == c'est pas gagner abord
    Code:
    package Premier4;
    
    import java.util.*;
    
    import java.lang.Math;
    import java.math.BigInteger;
    import java.math.BigDecimal;
    ;
    
    public class Premier4 {
    
    	public static void main(String[] args) {
    		Premier4 P1 = new Premier4();
    		@SuppressWarnings("resource")
    		Scanner keby = new Scanner(System.in);
    
    		System.out.println("Veuillez saisir le rang inferieur n1 et superieur n2 :");
    	     long s=keby.nextLong();
    		 long m=keby.nextLong();
    		
    		 BigInteger f1 ;
    		 
    		for (f1 = BigInteger.valueOf(s) ; f1.compareTo(BigInteger.valueOf(m)) <0; f1=f1.add(BigInteger.ONE)) {
    
    		System.out.printf("P%d \n"+ P1.Formule2(f1));
    
    		}
    
    		}
    		public int Div1 (BigInteger n) {	
    			
    		      int step;
    		       int i;
    		      
    			    if ( n.compareTo(BigInteger.valueOf(5)) < 0 ) {
    			    	
    			    	 if ((n==2) || ( n==3)) {	    
    			    	
    			    		 return 1;
    			    	 }
    			    	 
    			    	 else {
    			    		 
    			    	
    			    		 return 2;
    			            
    			            }
    			    	 
    			          } 
    			            else  if((n.mod(new BigInteger("6")).equals(BigInteger.ZERO))||(n.mod(new BigInteger("6")).equals( BigInteger.valueOf(2)))||(n.mod(new BigInteger("6")).equals( BigInteger.valueOf(4)))) 
    			            {
    			                   
    			            	return 2;
    			            
    			            }  
    			            
    			            else if (n.mod(new BigInteger("6")).equals( BigInteger.valueOf(3))) {
    			                        
    			            	return 3;
    			                  
    			            }
    			                         else {
    			        i=5;
    			        step=2;
    			        BigInteger bi; 
    			     
    			        while ( i*i <= n ) {
    			            
    			    	 if (n.mod(new BigInteger("i")).equals( BigInteger.valueOf(0))) {
    			    		 
    			    		 return i;
    			    	 }
    			    	else {
    			           
    			    		i=i+ step;
    			    	 
    			            if ( step==2) {
    			                step= 4;
    			         }
    			        else {
    			               
    			            	step=2;
    			            }
    			    	 }
    			     }
    			        return 1;
    			        
    			                         }
    			    }
    
    
    
    
    		public BigInteger Formule2 (BigInteger n){
    
    			BigInteger p=0;	
    		loop1:	
    		for(BigInteger j=n;j<=2*n;j++) {
    		n=j;	
    		int i=0;
    		BigInteger r=0;
    		BigInteger control = 2 * n + 1 ;
    		BigInteger Q = Div1(2 * n + 1);
    		BigInteger b = Q;
    		long sortie = 0;
    		ArrayList<BigInteger> K= new ArrayList<BigInteger> ();
    		K.add(control);
    
    		while ((Q!=1) && (sortie == 0)) {
    		b = Q ;
    		control=2 * n + Q;
    		Q = Div1(2 * n + Q);
    		r=K.size();
    		while (i<r) {
    
    		if (control== K.get(i) ) {
    
    		sortie = sortie + 1;
    
    		}
    
    		i=i+1;
    		}
    
    
    		K.add(2 * n + Q);
    
    		}
    
    
    		if ((Q==1) && (sortie == 0) ){	
    
    		p=2 * n + b;  break loop1;
    
    
    
    		}
    
    		    }
    
    		return p;
    
    		}
    
    
    
    
    
    
    
    
    
    
    
    }
    Dernière modification par JPL ; 22/04/2022 à 19h55. Motif: remplacement de la balise Quote par Code

  8. #7
    vgondr98

    Re : problème de calcul sur 20 à 50 chiffres de ma formule sur les nombres premiers

    long s=keby.nextLong();
    BigInteger f1;
    f1 = BigInteger.valueOf(s) ;

    C'est trois lignes ne sont pas logiques du tout. Là, tu passes une valeur limitée (long) dans un BigInteger qui est illimité donc tu es limité dès la première ligne.
    https://stackoverflow.com/questions/...o-a-biginteger

    Le BigInteger peut prendre un string en paramètre.
    BigInteger numBig = new BigInteger("859982599687248298 248298225252468426842684684684 684684984841841841414184184198 421984894198421894289429842198 4286289228927948728929829");

    Donc déjà, tu pourrais mettre des System.out.println(numBig) pour voir si ce que tu mets dans ton scanner correspond bien à la valeur de numBig.

  9. #8
    vgondr98

    Re : problème de calcul sur 20 à 50 chiffres de ma formule sur les nombres premiers

    Code:
    @Test
    void contextLoads() {
    		
    	String s = "1";
    		
    	BigInteger n = new BigInteger(s);
    		
    	System.out.println(n);
    		
    	BigInteger deux = new BigInteger("2");
    		
    	BigInteger control = (deux.multiply(n)).add(new BigInteger("1"));
    		
    	System.out.println(control);
    		
    }
    Sinon, avec les BigInteger, les + et les *, il faut oublier.

  10. #9
    vgondr98

    Re : problème de calcul sur 20 à 50 chiffres de ma formule sur les nombres premiers

    Nom : bug BigInteger.png
Affichages : 143
Taille : 3,8 Ko
    Voilà le type d'erreur que j'obtiens avec tes calculs. Ces erreurs sont fournies par l'IDE que j'utilise (eclipse). Est-ce que tu utilises un IDE ou tu codes directement avec un bloc note ?

  11. #10
    saniadaff

    Re : problème de calcul sur 20 à 50 chiffres de ma formule sur les nombres premiers

    Bonsoir
    Je travail avec eclipse;

    J'ai vu sur google les exemples que vous aviez donné; mais je n'ai pas vue des exemples sur mes principaux problèmes:

    long s=keby.nextLong();
    BigInteger f1;
    f1 = BigInteger.valueOf(s) ;
    C'est cette partie je veux implémentée;
    Double s=keby.nextDouble();
    Double m=keby.nextDouble();
    for (Double x = s ; x <= m; x++) {

    System.out.printf("P%d : %d \n",+x, +P1.Formule2(x));

    }
    Je n'arrive aussi à implementé les if ((n==2) || ( n==3)) {


    les while ( i*i <= n ) {

    C'est très dur ça;
    Dernière modification par saniadaff ; 24/04/2022 à 15h19.

  12. #11
    vgondr98

    Re : problème de calcul sur 20 à 50 chiffres de ma formule sur les nombres premiers

    Code:
    BigInteger s = new BigInteger("1");
    BigInteger m = new BigInteger("12");
    		
    for (BigInteger x = s ; x.compareTo(m) == -1 || x.compareTo(m) == 0; ) {
    			
    			x = x.add(new BigInteger("1"));
    			
    			System.out.println(x);
    			
    }
    https://www.geeksforgeeks.org/bigint...ethod-in-java/

    x.compareTo(m) == -1 || x.compareTo(m) == 0 est équivalent à x <= m d'après mes tests.

  13. #12
    Merlin95

    Re : problème de calcul sur 20 à 50 chiffres de ma formule sur les nombres premiers

    Oui c'est exactement ce qu'on est en droit d'attendre

  14. #13
    Contrario666

    Re : problème de calcul sur 20 à 50 chiffres de ma formule sur les nombres premiers

    Je n'arrive aussi à implementé les if ((n==2) || ( n==3)) {
    C'est normal.
    Vous avez déclaré la variable n en tant que BigInteger
    Or ce qu'on ne vous a pas encore explicitement dit c'est qu'une variable de type BigInteger ne peut peut pas être manipulée comme les autres types numériques les plus courants.
    Vous ne pouvez pas la comparer par exemple comme ça "n==2" ou la multiplier par exemple comme ça "n*2".
    Vous devez faire appel à ses méthodes...
    Car n est un objet et non pas un type numérique intégré (il présente donc "des méthodes" pour le manipuler qui ne sont pas celles classiquement attribuées aux types numériques).

    Vous l'avez d'ailleurs déjà fait ici :
    Code:
    for (f1 = BigInteger.valueOf(s) ; f1.compareTo(BigInteger.valueOf(m)) <0; f1=f1.add(BigInteger.ONE))
    f1 qui un objet BigInteger possède la méthode (une fonction quoi) compareTo() et lorsque vous écrivez f1.compareTo le compilateur comprend que vous faites appel à cette fonction qui retourne le résultat 0 1 ou -1 selon le résultat de cette fonction.
    Donc pour arriver au même résultat que n==2 (si n était un entier) vous pouvez faire pareil : n.compareTo(BigInteger.valueOf (2)) == 0 ou alors plus simplement employer la méthode .equal()

    Et pour multiplier un BigInteger on n’emploie pas le caractère * (qui est reconnu de facto par le compilateur comme un multiplicateur sur un type numérique) mais la méthode .multiply() de l'objet BigInteger.
    Code:
    public BigInteger multiply(BigInteger val)
    
    Returns a BigInteger whose value is (this * val).
    
    Parameters:
        val - value to be multiplied by this BigInteger.
    Returns:
        this * val
    Dernière modification par Contrario666 ; 24/04/2022 à 21h04.

  15. #14
    pm42

    Re : problème de calcul sur 20 à 50 chiffres de ma formule sur les nombres premiers

    En fait, il aurait fallu lire la doc ou un tutoriel. Effectivement, c'était beaucoup demander.

  16. #15
    saniadaff

    Re : problème de calcul sur 20 à 50 chiffres de ma formule sur les nombres premiers

    Merci pour certaines réponses;
    En fait, il aurait fallu lire la doc ou un tutoriel. Effectivement, c'était beaucoup demander.
    J'ai vu certains dans des tuto mais mon problème n'est pas totalement disparu car Mr Contrario666 a même indique que j'ai implémenté la boucle for; mais il n'a pas vu où j'ai le problème;

    C'est la récupération dans le scanner puis son utilisation dans for (le lien de la variable récupérée dans le scanner avec la variable utilisée dans for)

    en même temps la boucle while avec itération dans while.
    == est donc compris avec lui;

  17. #16
    saniadaff

    Re : problème de calcul sur 20 à 50 chiffres de ma formule sur les nombres premiers

    l'icone de la balise code n’apparaît pas chez moi;

    Bon j'ai beaucoup modifié et la fonction Div1, ça reste le While;
    La fonction Formule2, là je n'arrive pas à trouvé control=2*n+1;
    j'ai fait plusieurs essai de modifications et à chaque fois je trouve pas donc je l’enlève;
    tout le contenu de la Formule2 est d'abord caduque:

    Code:
    package Premier4;
    
    import java.util.*;
    import java.lang.Math;
    import java.math.BigInteger;
    import java.math.BigDecimal;
    
    public class Premier4 {
    
    	public static void main(String[] args) {
    		Premier4 P1 = new Premier4();
    		@SuppressWarnings("resource")
    		Scanner keby = new Scanner(System.in);
    
    		System.out.println("Veuillez saisir le rang inferieur n1 et superieur n2 :");
    		 BigInteger s=keby.nextBigInteger();
    		 BigInteger m=keby.nextBigInteger();
    		 
    		 for (BigInteger x = s ; x.compareTo(m) == -1 || x.compareTo(m) == 0;x = x.add(new BigInteger("1")) ) {	
    
    		System.out.printf("P%d \n"+ P1.Formule2(x));
    
    		}
    
    		}
    		public int Div1 (BigInteger n) {	
    			
    		      int step;
    		       int i;
    		      
    			    if ( n.compareTo(BigInteger.valueOf(5))==-1 ) {
    			    	if((n.compareTo(BigInteger.valueOf (2)) == 0) || (n.compareTo(BigInteger.valueOf (3)) == 0))  {			    	    
    			    	
    			    		 return 1;
    			    	 }
    			    	 
    			    	 else {
    			    		 
    			    	
    			    		 return 2;
    			            
    			            }
    			    	 
    			          } 
    			            else  if((n.mod(new BigInteger("6")).equals(BigInteger.ZERO))||(n.mod(new BigInteger("6")).equals( BigInteger.valueOf(2)))||(n.mod(new BigInteger("6")).equals( BigInteger.valueOf(4)))) 
    			            {
    			                   
    			            	return 2;
    			            
    			            }  
    			            
    			            else if (n.mod(new BigInteger("6")).equals( BigInteger.valueOf(3))) {
    			                        
    			            	return 3;
    			                  
    			            }
    			                         else {
    			        i=5;
    			        step=2;
    			        BigInteger bi; 
    			     
    			        while ( i*i <= n ) {
    			            
    			    	 if (n.mod(new BigInteger("i")).equals( BigInteger.valueOf(0))) {
    			    		 
    			    		 return i;
    			    	 }
    			    	else {
    			           
    			    		i=i+ step;
    			    	 
    			            if ( step==2) {
    			                step= 4;
    			         }
    			        else {
    			               
    			            	step=2;
    			            }
    			    	 }
    			     }
    			        return 1;
    			        
    			                         }
    			    }
    
    
    
    
    		public BigInteger Formule2 (BigInteger n){
    
    		BigInteger p;	
    		loop1:	
    		for (BigInteger j = n ; j.compareTo(n.multiply(new BigInteger("2"))) == -1 || j.compareTo(n.multiply(new BigInteger("2"))) == 0;j = j.add(new BigInteger("1")) ) {	
    
    		n=j;	
    		int i=0;
    		BigInteger r= new BigInteger("0");
    		BigInteger control = 2 * n + 1 ;
    		BigInteger Q = Div1(2 * n + 1);
    		BigInteger b = Q;
    		long sortie = 0;
    		ArrayList<BigInteger> K= new ArrayList<BigInteger> ();
    		K.add(control);
    
    		while ((Q!=1) && (sortie == 0)) {
    		b = Q ;
    		control=2 * n + Q;
    		Q = Div1(2 * n + Q);
    		r=K.size();
    		while (i<r) {
    
    		if (control== K.get(i) ) {
    
    		sortie = sortie + 1;
    
    		}
    
    		i=i+1;
    		}
    
    
    		K.add(2 * n + Q);
    
    		}
    
    
    		if ((Q==1) && (sortie == 0) ){	
    
    		p=2 * n + b;  break loop1;
    
    
    
    		}
    
    		    }
    
    		return p;
    
    		}
    
    
    
    
    
    
    
    
    
    
    
    }
    Dernière modification par JPL ; 25/04/2022 à 14h10. Motif: remplacement de la balise Quote par Code

  18. #17
    pm42

    Re : problème de calcul sur 20 à 50 chiffres de ma formule sur les nombres premiers

    Et nous balancer du code correctement formaté et lisible, ça n'était pas dans les tutos non plus ?

    Ici, on a l'équivalent informatique de : https://forums.futura-sciences.com/m...-premiers.html

    C'est à dire "je veux faire un truc mais toute forme de rigueur et de méthode est à proscrire".

  19. #18
    vgondr98

    Re : problème de calcul sur 20 à 50 chiffres de ma formule sur les nombres premiers

    Code:
    Scanner keby = new Scanner(System.in);
    System.out.println("Veuillez saisir le rang inferieur n1 et superieur n2 :");
    BigInteger s = new BigInteger(keby.next());
    BigInteger m = new BigInteger(keby.next());
    				
    for (BigInteger x = s ; x.compareTo(m) == -1 || x.compareTo(m) == 0; ) {
    					
    	x = x.add(new BigInteger("1"));
    	System.out.println(x);
    					
    }
    		
    keby.close();
    J'ai pourtant dit que les BigInteger pouvait prendre un string en paramètre.

  20. #19
    vgondr98

    Re : problème de calcul sur 20 à 50 chiffres de ma formule sur les nombres premiers

    J'ai testé avec ces deux inputs :
    Code:
    11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 11111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111121
    La boucle fonctionne bien.
    1...12
    1...13
    1...14
    1...15
    1...16
    ...
    1...22

  21. #20
    vgondr98

    Re : problème de calcul sur 20 à 50 chiffres de ma formule sur les nombres premiers

    Sinon, ton annotation @SuppressWarnings("resource"), elle sert à rien, tu peux la remplacer par keby.close(); à la fin de ton programme.

  22. #21
    vgondr98

    Re : problème de calcul sur 20 à 50 chiffres de ma formule sur les nombres premiers

    control=2*n+1;
    Code:
    String s = "1";
    		
    BigInteger n = new BigInteger(s);
    		
    System.out.println(n);
    		
    BigInteger deux = new BigInteger("2");
    		
    BigInteger control = (deux.multiply(n)).add(new BigInteger("1")); //control=2*n+1;
    		
    System.out.println(control);
    J'avais déjà posté ce code.

  23. #22
    saniadaff

    Re : problème de calcul sur 20 à 50 chiffres de ma formule sur les nombres premiers

    C'est à dire "je veux faire un truc mais toute forme de rigueur et de méthode est à proscrire".
    Je suis chez les informaticiens ici je te croyais mathématicien donc ne me cherche pas hein

    C'est du grand classique. On a des gens qui veulent vivre dans leur rêve de découvrir quelque chose et c'est tellement fort qu'ils ne voient pas qu'ils n'ont pas le niveau, leurs erreurs et ignorent les objections.
    Tu peu me dire ton objectif ici?

    Car dans tous les deux sujets tu n'a rien apporté sauf des manquements;
    Dernière modification par saniadaff ; 25/04/2022 à 11h32.

  24. #23
    Paraboloide_Hyperbolique

    Re : problème de calcul sur 20 à 50 chiffres de ma formule sur les nombres premiers

    Citation Envoyé par Contrario666 Voir le message
    C'est normal.
    Vous avez déclaré la variable n en tant que BigInteger
    Or ce qu'on ne vous a pas encore explicitement dit c'est qu'une variable de type BigInteger ne peut peut pas être manipulée comme les autres types numériques les plus courants.
    Vous ne pouvez pas la comparer par exemple comme ça "n==2" ou la multiplier par exemple comme ça "n*2".
    Vous devez faire appel à ses méthodes...
    Car n est un objet et non pas un type numérique intégré (il présente donc "des méthodes" pour le manipuler qui ne sont pas celles classiquement attribuées aux types numériques).

    [...]

    Et pour multiplier un BigInteger on n’emploie pas le caractère * (qui est reconnu de facto par le compilateur comme un multiplicateur sur un type numérique) mais la méthode .multiply() de l'objet BigInteger.
    [Petit hors sujet]

    Tiens, je pensais que le Java prenait en charge la surcharge des opérateurs; comme en C++ avec lequel il partage pas mal d'ADN. On en apprend tous les jours.

    [Fin du hors sujet]

  25. #24
    pm42

    Re : problème de calcul sur 20 à 50 chiffres de ma formule sur les nombres premiers

    Citation Envoyé par saniadaff Voir le message
    Je suis chez les informaticiens ici je te croyais mathématicien donc ne me cherche pas hein
    Non, j'ai été mathématicien mais je suis informaticien maintenant.

    Citation Envoyé par saniadaff Voir le message
    Car dans tous les deux sujets tu n'a rien apporté sauf des manquements;
    Tu n'as sans doute pas remarqué les commentaires de gg0 sur l'autre fil (qui lui est mathématiciens).
    Quand à ce fil, tu n'as sans doute pas remarqué non plus que c'est moi qui t'ai donné la solution à ton problème.

    Donc, c'est simple : tu t'es attaqué à un problème largement au dessus de ton niveau : les nombres premiers et sans même connaitre la base de la base, c'est à dire les articles de Wikipedia.
    Tu codes sans respecter les règles élémentaires ce qui te complique la vie et celle de ceux qui veulent t'aider.
    Et tu ignores toute remarque qui ne t'arrange pas.

    C'est hyper-classique et à la fin, tu ne vas arriver à rien.
    Si tu veux progresser, tu peux changer d'attitude et écouter les gens plus expérimentés que toi ou bien t'accrocher à l'illusion que tu vas trouver des trucs sur un sujet hyper-pointu où des générations de mathématiciens tous plus géniaux les uns que les autres ont bossé.
    Et clairement, tu n'es pas dans cette catégorie (comme tout le monde ici d'ailleurs).

  26. #25
    jiherve

    Re : problème de calcul sur 20 à 50 chiffres de ma formule sur les nombres premiers

    bonjour
    l'overloading de package existe aussi dans d'autres langages mais c'est casse gueule , quoique confortable, car tout repose alors sur la rigueur du programmeur.
    JR
    l'électronique c'est pas du vaudou!

  27. #26
    pm42

    Re : problème de calcul sur 20 à 50 chiffres de ma formule sur les nombres premiers

    Citation Envoyé par Paraboloide_Hyperbolique Voir le message
    Tiens, je pensais que le Java prenait en charge la surcharge des opérateurs; comme en C++ avec lequel il partage pas mal d'ADN.
    Non et c'est volontaire de la part de Gosling, le concepteur du langage : il voulait que tout soit explicite pour favoriser la lisibilité.
    Alors qu'en C++, entre la surcharge des opérateurs, les constructeurs divers, les copy-constructeurs et autres joyeuseté, il était souvent impossible de comprendre ce que faisait le code en le lisant si on ne connaissait pas le contenu de tous les #include.

    Donc Java est verbeux mais à l'époque, ce n'était pas gênant parce qu'on avait un langage objet largement plus facile à apprendre et maitriser que C++.

    Les langages compatibles avec Java mais qui se veulent plus modernes comme Kotlin et Scala permettent eux des surcharger les opérateurs (Kotlin) ou de carrément définir presque tout ce qu'on veut (Scala) ce qui s'avère pratique.
    Mais là aussi, la grande puissance de Scala se paye aussi en complexité parfois, difficulté de lire du code, de faire fonctionner "ce qui devrait marcher", messages incompréhensibles du compilo et j'en oublie.

  28. #27
    jiherve

    Re : problème de calcul sur 20 à 50 chiffres de ma formule sur les nombres premiers

    RE
    +1 c'est pourquoi en VHDL il est fortement déconseillé (interdit en D0254) d'utiliser l'overloading car au final on ne sait plus identifier choux et carottes, le typage fort est lourd mais sur!
    JR
    l'électronique c'est pas du vaudou!

  29. #28
    saniadaff

    Re : problème de calcul sur 20 à 50 chiffres de ma formule sur les nombres premiers

    Quand à ce fil, tu n'as sans doute pas remarqué non plus que c'est moi qui t'ai donné la solution à ton problème.
    Ah bon!!!
    tu m'a donné une solution?

    Je ne l'ai pas vue; j'ai même fait un tour que peut être c'est à mon insu tu l'a envoyé mais malheureusement je ne vois rien!!
    pour ton info je n'ai posé aucun problème appart les problèmes affiché chez les informaticiens ici
    Dans la fil de l'autre côté moi j'ai cru que tu as un problème de maths et pardons allez régler ce problème la-bas et laisse les informaticiens en paix sinon je finirai par t'appeler douze métiers treize problèmes;
    Allez y de l'autre coté pour m'attaquer en maths? je suis à t'a porté la-bas car je donne en Maths et pas pour apprendre ou recevoir une quelconque solution ou même de tes conseils.

    Tu nous nous perturbe ici;

  30. #29
    pm42

    Re : problème de calcul sur 20 à 50 chiffres de ma formule sur les nombres premiers

    Citation Envoyé par saniadaff Voir le message
    tu m'a donné une solution?
    Qui t'a dit d'utiliser les BigInt ? 1ère réponse dans ce fil, le 22/04/2022 à 07h05.

    Citation Envoyé par saniadaff Voir le message
    Je ne l'ai pas vue; j'ai même fait un tour que peut être c'est à mon insu tu l'a envoyé mais malheureusement je ne vois rien!!
    Tu l'as clairement vue puisque tu t'es mis à l'utiliser.

    Comme je disais, tu as un gros problème de méthode et d'attitude.

  31. #30
    saniadaff

    Re : problème de calcul sur 20 à 50 chiffres de ma formule sur les nombres premiers

    Merci beaucoup pour votre apport!
    J'ai effectué pas mal de correction grâce à vos aide!!
    Mr vgondr98 , voici ce qui reste après avoir appliquer ce que vous m'avez envoyé: j'ai réussit à éliminer beaucoup d'erreur grâce à ça;

    while ( i*i <= n ) {
    BigInteger Q = Div1(2 * n + 1);
    while ((Q!=1) && (sortie == 0)) {
    Q = Div1(2 * n + Q);
    if ((Q==1) && (sortie == 0) ){

Page 1 sur 2 1 DernièreDernière

Discussions similaires

  1. Formule qui génère des nombres premiers
    Par Meiosis dans le forum Mathématiques du supérieur
    Réponses: 9
    Dernier message: 23/04/2022, 09h57
  2. Une formule pour générer des nombres premiers
    Par extrazlove dans le forum Mathématiques du supérieur
    Réponses: 8
    Dernier message: 06/10/2019, 13h13
  3. Formule d'Euler pour nombres premiers.
    Par lylyanna dans le forum Mathématiques du collège et du lycée
    Réponses: 1
    Dernier message: 29/09/2012, 21h33
  4. Formule qui donne tous les nombres premiers (le retour)
    Par invite2b14cd41 dans le forum Mathématiques du supérieur
    Réponses: 13
    Dernier message: 17/06/2011, 15h32