Bibm@th

Forum de mathématiques - Bibm@th.net

Bienvenue dans les forums du site BibM@th, des forums où on dit Bonjour (Bonsoir), Merci, S'il vous plaît...

Vous n'êtes pas identifié(e).

#151 Re : Programmation » Modifier un programme C++ » 21-09-2021 07:01:25

LEG

Re suite du post ci-dessus avec le programme complet de l'algorithme.

Par série, la position des Tbase dans leur cellule est indiqué par l'index set() qui est égal au produit du couple de Premiers ((p'*q)- i )/30 = set(..) avec (i) appartenant à {1,7,11,13,17,19,23,29}

Ce programme existe en Python (établi par Yoshi voir sous forum programme en python...), mais modifié, seule problème il ne sauvegarde pas les nombres premier trouvés par fichier....
peut être faudrait il juste ajouter cette fonction en fin de programme....si possible....

Je met le programme transformé en C++, Car je pense qu'il serait plus simple de modifier celui ci, en rajoutant la fonction qui sauvegarde les 200 derniers , en partant de la fin du tableau si possible ou lors de la fonction :

cout << "Nombre premiers criblés famille " << fam << " plus petits que "<< n <<": " << total;// << " time " << (clock()-cl)*1e-6<< endl;
  return total;

Ou encore une fonction qui imprime le tableau criblé inférieur à 300 lignes c'est à dire le tableau de 1 .0.1.1.0.0 0 ...etc


// -*- compile-command: "/usr/bin/g++ -g goldbache.cc" -*-
#include <vector>
#include <iostream>
#include <cmath>
#include <stdlib.h>
#include <time.h>
using namespace std;
// fill Erathosthene sieve crible for searching primes up to 2*crible.size()*32+1
// crible is a (packed) bit array, crible[i] is true if 2*i+1 is a prime
// crible must be set to true at startup
void fill_crible(vector<unsigned> & crible,unsigned p){
  crible.resize((p-1)/64+1);
  unsigned cs=crible.size();
  unsigned lastnum=64*cs;
  unsigned lastsieve=int(std::sqrt(double(lastnum)));
  unsigned primesieved=1;
  crible[0] = 0xfffffffe; // 1 is not prime and not sieved (2 is not sieved)
  for (unsigned i=1;i<cs;++i)
    crible[i]=0xffffffff;
  for (;primesieved<=lastsieve;primesieved+=2){
    // find next prime
    unsigned pos=primesieved/2;
    for (;pos<cs;pos++){
      if (crible[pos/32] & (1 << (pos %32)))
  break;
    }
    // set mutiples of (2*pos+1) to false
    primesieved=2*pos+1;
    unsigned n=3*primesieved;
    for (;n<lastnum;n+=2*primesieved){
      pos=(n-1)/2;
      crible[(pos/32)] &= ~(1<<(pos %32));
    }
  }
}
unsigned nextprime(vector<unsigned> & crible,unsigned p){
  // assumes crible has been filled
  ++p;
  if (p%2==0)
    ++p;
  unsigned pos=(p-1)/2,cs=crible.size()*32;
  if (2*cs+1<=p)
    return -1;
  for (;pos<cs;++pos){
    if (crible[pos/32] & (1<<(pos%32))){
      pos=2*pos+1;
      // if (pos!=nextprime(int(p)).val) CERR << "error " << p << endl;
      return pos;
    }
  }
  return -1;
}

typedef unsigned long long ulonglong;

size_t ECrible(const vector<ulonglong> &premiers, ulonglong n, int fam, vector<bool> &crible, size_t lencrible){
  int cl=clock();
  size_t nbpremiers=premiers.size();
  //vector<bool> crible(lencrible,true);
  // ulonglong n2=2*n;
  vector<ulonglong> indices(nbpremiers);
  for (size_t i=0;i<nbpremiers;++i){
    ulonglong p=premiers[i];
    ulonglong produit;
    int GM[]={7,11,13,17,19,23,29,31};
    for (size_t j=0;j<sizeof(GM)/sizeof(int);j++){
      produit = p*GM[j];
      if (produit %30==fam){
  produit /= 30;
  break;
      }
    }
    indices[i]=produit;
  }
  ulonglong nslices=lencrible/1500000,currentslice=0;
  if (nslices==0) nslices=1;
  for (;currentslice<nslices;++currentslice){
    size_t slicelimit=currentslice+1;
    slicelimit=slicelimit==nslices?lencrible:(currentslice+1)*(lencrible/nslices);
    for (size_t i=0;i<nbpremiers;++i){
      ulonglong p=premiers[i];
      size_t index;
      for (index=indices[i];index<slicelimit;index+=p)
  crible[index]=0;
      indices[i]=index;
    }
  }
  size_t total=0;
  for (size_t index=0;index<lencrible;++index)
    total += int(crible[index]);
  cout << "Nombre premiers criblés famille " << fam << " plus petits que "<< n <<": " << total;// << " time " << (clock()-cl)*1e-6<< endl;
  return total;
}

int main(int argc, char **argv)
{
 vector<unsigned> temp;
  ulonglong debut = 1200000000;
  ulonglong fin = 1200000015;

 vector<int> familles;
  familles.push_back(1);
  familles.push_back(7);
  familles.push_back(11);
  familles.push_back(13);
  familles.push_back(17);
  familles.push_back(19);
  //familles.push_back(23);
  familles.push_back(29);

  for (int i = 0; i < familles.size(); i++)
  {
    int fam = familles[i];

    for (ulonglong limite = debut; limite < fin; limite += 15)
    {
      cout << "famille : " << fam << " limite : " << limite << endl;
      double sqrtN = unsigned(std::sqrt(double(limite)));
      fill_crible(temp, sqrtN);
      vector<ulonglong> premiers;
      for (ulonglong p = 7; p <= sqrtN;)
      {
        premiers.push_back(p);
        p = nextprime(temp, p);
        if (p == unsigned(-1))
          break;
      }

      size_t lencrible = limite/30;
      vector<bool> crible(lencrible, true);
      ECrible(premiers, limite, fam, crible, lencrible);
    }
  }
}

 

#152 Programmation » Modifier un programme C++ » 21-09-2021 06:52:00

LEG
Réponses : 3

Bonjour
Si quelqu'un pouvait si possible, m'aider à modifier ce programme C++ ; ci joint avec les explications de l'algorithme P modulo 30 dans le document joint.
Tel qu'il a été programmé à l'époque en 2003, par un étudiant à l'ESSI de Sophia Antipolis Alpes Maritimeil;  il y a deux anomalies

la première :) lorsque la "Tbase" appartenant à [7 ; 31] extrait son conjoint , elle doit avant de lancer son conjoint P uniquement que si et seulement si il est < à racine de N , la limite du crible, ce qui n'est pas le cas, d'où des milliers de conjoints > racine de N criblent inutilement...etc

Je pense que c'est dans cette partie du programme


void Algo::makeTab(){
  int cptBase ;
  int pourcent =0;
  long nbpourcent =0;
  long nbdix = nbCase/10 ;
  std::cout << pourcent << "% effectue..." << std::endl ;
  while(nbBase>0){
    for (cptBase=0 ; cptBase<nbBase ; cptBase++){
      if (tBool[tBase[cptBase].ind]==0) {
  tBool.set(tBase[cptBase].ind);
  if (tBase[cptBase].bnb%tBase[cptBase].nb!=0)  // si le conjoint bnb est < racine carrée de la limite N
    getOut(cptBase);
      }
      tBase[cptBase].next();
      if (tBase[cptBase].ind>nbCase)
  tBase[cptBase].stop=1 ;

    }
    if (tBase[0].ind>nbpourcent+nbdix){
      nbpourcent=tBase[0].ind ;
      pourcent+=10 ;
      std::cout << pourcent << "% effectue..." << std::endl ;
    }
    MAJtBase();
  }
}

void Algo::MAJtBase(){
  int i;
  for (i=0 ; i<nbBase ; i++){
    if (tBase[i].stop==1){
      int j;
      for (j=i ; j<nbBase-1 ; j++){
  tBase[j].bnb=tBase[j+1].bnb;
  tBase[j].nb=tBase[j+1].nb;
  tBase[j].ind=tBase[j+1].ind ;
  tBase[j].stop=tBase[j+1].stop ;
      }
      nbBase--;
    }
  }
}
 

Puis deuxième modification :

remplacer les Tbases [7 ; 31] par les new Tbase > 31 appartenant à {37,41,43,47,79,53,59,61}  79 remplace 49 qui n'est pas premier
mais pas avant d(avoir lancer les 8 bases [7;31]cribler leurs multiples jusqu'à la limite N puis sorte de l'algorithme break retour à l'Algo avec les New Tbase
exemple avec la série 13  :


void Algo::makeTab13(){
  theSerie = 13;   // lancer en debut d'Algo les 8 bases de 7 a 31 a partir de leur cellule set( ),jusqu'au bout et marquent leur mulitples
  tBool.set(0);     // puis retour au programme avec les nouvelles Tbase de 37 a 79 dans leur cellule set()et on lance l'Algo
  tBool.set(4);  // (7.19) ... set(97)(37,79)
  tBool.set(8);  // (11.23)... set(72)(41,53)
  tBool.set(13);  // (13.31) ... set(87)(43,61)
  tBool.set(16);  // (17.29)... set(92)(47,59)
  tBase = new Base [8];
  nbBase = 8;
  tBase[0] = Base (7,79,18);   // (37,109,134)
  tBase[1] = Base (19,37,23);  // (79,67,176)
  tBase[2] = Base (11,53,19);  // (41,83,113)
  tBase[3] = Base (23,41,31);  // (53,71,125)
  tBase[4] = Base (13,61,26);  // (43,151,216) // ici bnb 91 et 121 non prime donc tBase 43 et bnb 151 cellule 216
  tBase[5] = Base (31,43,44);  // (61,73,148)
  tBase[6] = Base (17,59,33);  // (47,89,139)
  tBase[7] = Base (29,47,45);  // (59,107,210) // idem 77 non prime donc tBase 59 et bnb 107 cellule 210
  makeTab();
}
 

Voici le programme complet dans sa forme basic , qui est en fin de document avec les explications du déroulement de l'algorithme en début de document avec somme exemple le tableau série 23%30 et série 1%30.
Programme que je met dans le sujet réponse suivant pour ne pas surcharger...
Merci d'avance ...[le but étant de comparer la densité de premiers jumeaux par famille avec la densité de premiers ayant un écart de 246 suite au projet Polymatrh, ayant démontrer qu'il y aurait une infinité de nombres premiers $p +246 = q$ .

Or si cette densité est équivalente lorsque N tend vers l'infini, car c'est une conséquence du fonctionnement de l'algorithme avec ses 8 bases qui tournent en boucle, afin d'extraire leur conjoint (bnb +30) quelque soit une des 8 familles $(i)\in{(1,7,11,13,17,19,23,29)}$. Alors il est clair qu'il y a une infinité de premiers jumeaux Pj, $p + 2 = q$ conséquence de la démonstration du projet Polymath pour $p+246=q$

Je viens de tester ce programme en ayant modifier le départ des bases de [7 à 31] par celle de [37 à 79] on ne gagnerai que 3 minutes alors que le programme Ératosthène.Cpp, ci dessous il va 11 fois plus vite....

https://www.cjoint.com/c/KIvgyufg0t0

#153 Re : Café mathématique » Ou sont ils les autres nombres premiers de Merssene ? » 23-08-2021 09:43:10

LEG

bonjour
1) Il n'existe aucun livre révélant tous les nombres premiers vue qu'il y en a une infinité...prétendre le contraire et idiot à moins de se prendre pour ...""dieu ou autre""...

2) Est ce que tu penses que tous les enfants de 3 à 5 ans en France parlent l'anglais...?

3) Je trouve scandaleux pour rester poli , de mélanger la religion aux Mathématiques , jusqu'à preuve du contraire " dieu ou autre ... " n'ont jamais démontré quoi que ce soit, et encore moins fait de Mathématiques ou alors prouve le rigoureusement et Mathématiquement...

Ta citation et ta propagande (Revealing Arithmetic):

Voici enfin un livre pour vous aider à transformer votre classe de maths et montrer à votre enfant l'œuvre de Dieu en maths ! Révéler l'arithmétique vous aidera à : Enseigner les mathématiques à partir d'une vision du monde biblique. Adorez le Seigneur en maths. Aidez votre enfant à vraiment comprendre les...

Qu'est ce que vient faire un tel sujet sur un Forum de Maths avec ta propagande ...?

Je demande à la modération de supprimer ce post # 5 SVP...!

#154 Re : Programmation » Résolution d'un polynôme de degré n dans Q et dans Z » 17-08-2021 11:47:04

LEG

Re :
Ok , c'est impeccable, je viens de refaire un copier collé...plus d'érreur.
@+

#155 Re : Programmation » Résolution d'un polynôme de degré n dans Q et dans Z » 17-08-2021 11:16:37

LEG

je pensais que l'erreur venait de ce double

        if expo_min==d-1:
            if d==1:
                traite_binome_degre1(Coff[d][0],Coff[d-1][0])
                return 0,0,0,expo_min
            else:                                                
                return 1,a0,Coff[-1][0],expo_min              ## ici ##
        else:
            return 1,a0,Coff[-1][0],expo_min              ## doublon ?##
 

mais cela ne change rien : NameError: name 'cherche_racines' is not defined

Par contre si je fais le test avec l'ancien programme tout marche bien, la différence se situe uniquement à l'affichage des racines éventuelle, que j'ai en plus par rapport à ton affichage:

#156 Re : Programmation » Résolution d'un polynôme de degré n dans Q et dans Z » 17-08-2021 10:57:14

LEG

Bonjour @Yoshi
j'ai donc modifier l'ancien programme que tu m'as envoyé et voila ce que j'obtiens comme erreur :
:
******************************
      *  Résolution des Polynômes  *
      *         dans Z et Q        *
      *            v3.5            *
      ******************************


Degré du polynôme (entier naturel >= 1 attendu) : 3

Entrer le coefficient a0 (entier relatif attendu >=0 ou <=0) : 8
Entrer le coefficient a1 (entier relatif attendu >=0 ou <=0) : 30
Entrer le coefficient a2 (entier relatif attendu >=0 ou <=0) : 37
Entrer le coefficient a3 (entier relatif attendu >=0 ou <=0) : 15

     -----------------------

            ANALYSE


     Votre (fonction) Polynôme est :
P(X) = 15X^3+37X^2+30X+8

     Diviseurs de 8 et 15 :
D(a0) = [-8, -4, -2, -1, 1, 2, 4, 8]
D(a3) = [-15, -5, -3, -1, 1, 3, 5, 15]

     Racines Potentielles à tester :
(coefficients ai/an tous positifs, racines - si elles existent - toutes négatives)
{-8, -4, -8/3, -2, -8/5, -4/3, -1, -4/5, -2/3, -8/15, -2/5, -1/3, -4/15, -1/5, -2/15, -1/15}

Traceback (most recent call last):
  File "/usr/lib/python3.9/idlelib/run.py", line 559, in runcode
    exec(code, self.locals)
  File "/home/gilbert/Programmes/Python/Resolution polynômes dans Z et Q_v3_4.py", line 246, in <module>
    Sol,nb_s=cherche_racines(CRP,Coeff,0)
NameError: name 'cherche_racines' is not defined
>>>

#157 Re : Programmation » Résolution d'un polynôme de degré n dans Q et dans Z » 05-08-2021 12:41:32

LEG

ok ;
depuis hier je  cherchai ...donc je n'avais rien compris dans l'écriture....ok merci pour les explications...

En reprenant le lien que tu as fournis , et en testant le programme:  effectivement avec tes explications sur l'écriture des variables = coefficients , cela permet de ne pas se tromper pour chercher les racines d'un polynôme si il y en a...

Conclusion le programme fonctionne parfaitement , si il y a une erreur, alors il est clair qu'elle est humaine et que l'on a pas ou mal saisie les valeurs des coefficients $a_n$. Encore fait il comprendre ce que signifie trouver les racines d'un polynôme = les diviseurs premiers... et comprendre ce que tu m'as expliqué ci dessus.

On verra si l'intéressé du sujet , essaye de comprendre 1) tes explications 2) si il regarde le lien que tu as fourni : http://www.gecif.net/articles/mathemati … ynome.html

Mais ceci dit, je doute fort qu'il soit capable d'écrire le programme que tu m'as envoyé.... pour tester et encore moins d'en donner les explications, car il faut connaître parfaitement ce que doit faire le programme par rapport aux racines des polynôme à trouver , ce qui veut dire qu'il faut comprendre parfaitement les explications que tu m'as fournies ci dessus pour écrire les coefficients en fonction du degré du polynôme...

Cordialement et merci de ton temps....
Gilbert

#158 Re : Programmation » Résolution d'un polynôme de degré n dans Q et dans Z » 05-08-2021 09:56:48

LEG

re
@Yoshi :

Il y a quelque chose que je ne comprend pas .... voici le résultat du programme pour ce Polynôme pair ,de degré 2. :   P(x) = 21X² + X-10

pourquoi doit on rentrer ce coefficient a1 ??? puisque les racines sont 3 et 7 = 21 ou 2 et -5 = -10.

Résultat du programme degré et coefficients rentrés :
---------------------------------------------------------------------------------------------------------
Degré du polynôme (entier naturel attendu) : 2

Entrer le coefficient a0 (entier relatif attendu) : -10
Entrer le coefficient a1 (entier relatif attendu) : 1 :
Entrer le coefficient a2 (entier relatif attendu) : 21

  Votre Polynôme est :
P(X) = 21X^2+X-10

  Diviseurs de -10 et 21 :
D(a0) = [-10, -5, -2, -1, 1, 2, 5, 10]
D(a2) = [-21, -7, -3, -1, 1, 3, 7, 21]

  Racines Potentielles à tester :
{-10, -5, -10/3, -2, -5/3, -10/7, -1, -5/7, -2/3, -10/21, -1/3, -2/7, -5/21, -1/7, -2/21, -1/21, 1/21, 2/21, 1/7, 5/21, 2/7, 1/3, 10/21, 2/3, 5/7, 1, 10/7, 5/3, 2, 10/3, 5, 10}

  Affichage des Racines éventuelles :
P(-5/7)   = 0. Solution dans  Q : X = -5/7
P(2/3)    = 0. Solution dans  Q : X = 2/3
-------------------------------------------------------------------------------------------------------------------------------

Question : pourquoi le programme affiche les solutions sous cette forme : X = -5/7 et X = 2/3 ?

j'ai pris l'exemple du lien que tu as fournis au début du sujet ... ""méthode alternative "" http://www.gecif.net/articles/mathemati … ynome.html

si on prend l'exemple du polynôme : $X^3-6X^2-13x+42=0$ : on a donc X = 2 , et les racines du polynôme sont 2*3*7 = 42
comment on rentre les valeurs des coefficients pour le degré 3;  afin que le résultat donne racine = 2,3, 7 ;
il y a quelque chose que je ne comprend pas dans les valeurs des coefficients an à rentrer ...?
............................................................................................
j'ai rentré pour ao =1
Degré du polynôme (entier naturel attendu) : 3

Entrer le coefficient a0 (entier relatif attendu) : 1
Entrer le coefficient a1 (entier relatif attendu) : -6
Entrer le coefficient a2 (entier relatif attendu) : -13
Entrer le coefficient a3 (entier relatif attendu) : 42

  Votre Polynôme est :
P(X) = 42X^3-13X^2-6X+1   [question: on devrait avoir pour X =2: P(X) = X³ - 6X² - 13X + 42 = 0 c'est à dire : 2³ - 6*2² - 13*2 + 42 = 0 ; Non ?

  Diviseurs de 1 et 42 :
D(a0) = [-1, 1]
D(a3) = [-42, -21, -14, -7, -6, -3, -2, -1, 1, 2, 3, 6, 7, 14, 21, 42]

  Racines Potentielles à tester :
{-1, -1/2, -1/3, -1/6, -1/7, -1/14, -1/21, -1/42, 1/42, 1/21, 1/14, 1/7, 1/6, 1/3, 1/2, 1}

  Affichage des Racines éventuelles :   on devrait avoir comme racine avec P premier :  2, 3 et 7
P(-1/3)  = 0. Solution dans  Q : X = -1/3
P(1/7)   = 0. Solution dans  Q : X = 1/7
P(1/2)   = 0. Solution dans  Q : X = 1/2
......................................................................

#159 Re : Programmation » Résolution d'un polynôme de degré n dans Q et dans Z » 05-08-2021 08:22:35

LEG

Bonjour

Au moins pour une fois tu as fait l'effort d'écrire correctement en Français... ???

Donc il ne te reste qu'à faire l'effort d'expliquer ligne par ligne ce que demande @YOSHI .

Ce que tu as appris en python, doit être suffisant pour expliquer un minimum de ce que fait le programme, le fait de refuser de donner des explications, indique clairement que tu ne veux pas faire d'effort et que Yoshi fasse ton travail.....c'est peine perdue ....

Car depuis le début tu fais l'effort de ne pas répondre , alors que connaissant un peu ton algorithme, ce n'est pas difficile d'expliquer ce que font plusieurs lignes des fonctions du programme et pourquoi...! Surtout avec toutes les indications qu'il t'a données...et les erreurs qu'ils y avaient dans le programme à ne pas commettre avec les explications....

Reprend depuis le début et explique ce que tu as compris dans le programme et pourquoi, et : pas dans un mois... !

#160 Re : Programmation » Résolution d'un polynôme de degré n dans Q et dans Z » 29-07-2021 15:32:00

LEG

Re @Yoshi il fonctionne parfaitement dans ma version 3.9 sous linux c'est même très rapide

Tes explications sont très claires et le programme fonctionne très bien je me suis amusé avec degré 10.

Il n'indique aucune erreur donc tout est bon ...

Je suppose que cela devrait intéresser des étudiants dans ce domaine, car le programme de cet algorithme n'est pas évident à écrire...

["" je peaufine toujours mes explications sur les fichiers relatif à la conjecture de Goldbach dans ce forum....
car certaines explications sont pas très claires ou mal définies sur la fonction de l'algorithme de Goldbach... avec deux jeunes à l'UQUAM de Montréal.

Pour l'instant, même si ma preuve de l'impossibilité d'infirmer la conjecture est convaincante elle n'est pas suffisamment rigoureuse au sens Mathématique actuelle

Mais la solution est bien dans la propriété de l'algorithme de Goldbach d'une part
et aussi dans l'impossibilité d'utiliser l'affirmation suivante : on suppose que les événements que m et n – m soient premiers, sont statistiquement indépendants l'un de l'autre.
L'algorithme de Goldbach permet de prouver que cette supposition est fausse car si n – m est un nombre premier c'est par ce qu'il dépend de la congruence de m !
D'où si et seulement m est un nombre premier et qu'il est non congru à n modulo P, il est évident que n - m est aussi un nombre premier ! ""]

Bonne journée @Yoshi
@+

#161 Re : Programmation » Résolution d'un polynôme de degré n dans Q et dans Z » 28-07-2021 12:42:33

LEG

Re Bien sûr pas de problème tu as mon adresse mail, je suppose aussi qu'il y a des paramètres à entrer ... pour faire différents test .

Car je vois que dans ton résultat affiché il demande : entrer le coefficient pour a0, a1 ....a5
je suppose que c'est pour un polynôme de degré 5 , comment tu choisis  les coefficients ....

#162 Re : Programmation » Résolution d'un polynôme de degré n dans Q et dans Z » 28-07-2021 08:06:45

LEG

Salut Yoshi : Au moins tu t"es fait plaisirs....
Car je pense qu'il n'a aucune envie de vouloir apprendre par lui même , probablement de par son incompétence dans ce domaine qui demande de bosser.
@A+ LEG

#163 Re : Café mathématique » Ou sont ils les autres nombres premiers de Merssene ? » 19-07-2021 08:14:50

LEG

Bonjour :
Toucher l'infini, effectivement c'est très révolutionnaire... Donc on a un temps infini pour attendre de lire ce travail révolutionnaire ... Mais dommage, car la vie a un Temps qui est bien fini ...

Peux tu au moins nous indiquer le 51 ème nombre de Mersenne $M_n = 2^n$ ou du moins son exposant $n$...? Rassure toi $M(51)$  a moins de 1 milliard de chiffres, donc assez facile pour toi...

les $M_n$ leurs exposants sont de la forme: 3k +1 ou 3k -1.

Leurs exposants $n$ premier sont congrus à {1,7,13,19} modulo 30 pour la forme 3k + 1 et sont congrus à {11,17,23,29} modulo 30. pour la forme 3k - 1.

Tu peux aussi regarder du côté des nombres de Wagstaff en utilisant les exposants de Mersenne :

Soit $\frac{2^{3k – 1} + 1} {3}$ = premier de W exposant de la forme $3K – 1$ par exemple : $\frac{2^{17} + 1} {3} = 43691$
et $\frac{2^{3k + 1} + 1} {3}$ = Premier de W exposant de la forme $3K + 1$ par exemple : $\frac{2^{13} + 1} {3} = 2731 $

#164 Re : Programmation » Résolution d'un polynôme de degré n dans Q et dans Z » 10-07-2021 08:50:54

LEG
RAZAFINDRAFINDRA Hercele a écrit :
Je reprends l'exemple de 40
1, 40   2, 20   4, 10  5, 8   Pourquoi ?
 

Parce que, les nombres s'arrangent deux à deux distincte qui donnent leurs multiple égal 40. Donc tous ces nombres sont des diviseurs de 40.

Sauf erreur, Je suppose que Yoshi te demande de dire ou d'expliquer qu'elle est la fonction qui permet  de calculer les 4 diviseurs j de C après la boucle for
pour en déduire L = 1, 40   2, 20   4, 10  5, 8  et donc il ne va pas plus loin....

ÇA TE SERT À QUOI de donner un programme que tu ne peux expliquer ni de programmer l'algorithme qui est le sujet demandé par ton examinateur ...?

Tu vas demander à chaque fois que l'on fasse tes devoirs pour les donner à tes profs...?

Tu connais soit disant ton algorithme... Ok ; alors que fait en détail point par point la fonction :


 L,L1=[],[]
        for j in range(1,fin+1):
            if c%j==0:
                L.append(j)
 

et que veut dire :   if c%j==0: ?

#165 Re : Programmation » Résolution d'un polynôme de degré n dans Q et dans Z » 02-07-2021 17:17:21

LEG

Bonjour
@RAZAFINDRAFINDRA : tu devrais relire les explications que te donne Yoshi au post  #20 , page 1
concernant les questions  qu sujet de cette fonction :


for j in range(1,fin+1):
            if c%j==0:
                L.append(j)
                L.append(c//j)      
        L=list(set(L))
 

 

ainsi que


for c in [a0,an]:
        c= abs(c)
        fin=int(sqrt(c))
        L,L1=[],[]
        for j in range(1,fin+1):
            if c%j==0:
                L.append(j)
                if j**2 !=c:
                    L.append(c//j)
 

sauf erreur il te demande d'expliquer  la fonction ; for j in range(1,fin+1):

et ce que veut dire "" ces sous fonctions "" :

if c%j==0:
                L.append(j)

ainsi que:

if j**2 !=c:
                   L.append(c//j)

donc que veut dire (c//j)  ou si tu veux , qu'est ce que l'on prend comme valeur ?

ta citation :

Donc 40/1=40 ; 40/2=20 ; 40/3=13,3333 ; 40/4=10 ; 40/5=8 ; 40/6=6,666 ; 40/7=5,714

Ha bon ? les restes de 40 par 7 , par 6 , par 3 , sont égal 0 ...?

#166 Re : Programmation » Résolution d'un polynôme de degré n dans Q et dans Z » 01-07-2021 07:43:28

LEG

Salut :
e@Roro , oui mais tu sais que notre ami Yoshi aime bien pousser la chose jusqu'au bout...
Ça fait partie de ses qualités à expliquer point par point un programme, afin de l'optimiser, ou d'être sûr que la personne à compris, dans le cas d'un exercice à rendre à son prof...
Mais il ne lui donnera pas le programme, d'autant que c'est un devoir... ça tu peux en être sûr...

#167 Re : Café mathématique » Découverte Constante Syracuse » 20-06-2021 07:09:10

LEG

Bonjour

(je n'arrive toujours pas à écrire 2 puissance n)

tu mets le signe du dollar puis tu tapes 2^{n} et tu fermes avec le signe du dollar
par exemple $2^{124}$ mais n'oublie pas d'appuyer sut la barre espace juste après le ^.

#168 Re : Programmation » Résolution d'un polynôme de degré n dans Q et dans Z » 16-06-2021 17:50:39

LEG

re
@RAZAFINDRAFINDRA Hercele
tu n'as pas l'impression de te foutre de ce que @Yoshi essaye de t'expliquer ...?
Alors on a besoin que tu répondes à sa dernière question !!!

Maintenant tu dois pouvoir comprendre ce qu'il se passe dans ce morceau...
Suppose que c=24
A quoi sert
- que j'écrive fin=c//2+1 ?
- la condition  ?
  if c%j==0:
      L.append(j)
      L.append(c//j) pourquoi garder j et après c//j ?

TA RÉPONSE ?

#169 Re : Programmation » [Python] Factorisation d'un nombre (méthode de rho-Pollard) » 16-06-2021 11:59:56

LEG

re
impeccable merci

je viens de tester
Le nombre n = 13016291257034383768171194373 se factorise ainsi :
19873265519 * 6.549648946515635e+17
Temps de travail : 0.6110134124755859
>>>

je viens de regarder pour n = 19283635235010757318836917200237668345470484572549790364309671655196725561403266082609

il tourne....
il n'est pas premier :
6062144414067175 636201395811936711957057  × 3180992387819593789609 997698984136958924599537
 
il faut un peu plus de 20 minute sur Alpertron

et celui ci : 23875113860559757167662937759315939367424104813323103152324723911052620077274261982190596716880457550794712289293 est premier

Ainsi que : 522940234641110080871440237169026575520056445068482721271514659620113046579137158316602265193446478575493707769537213347578599293266137328840297723950438194623421497640453023119295323273727844427406217

#170 Re : Programmation » [Python] Factorisation d'un nombre (méthode de rho-Pollard) » 16-06-2021 07:15:13

LEG

Bonjour
@Yoshi
effectivement on ne peut importer gcd :
voici le message d'erreur :
Traceback (most recent call last):
  File "/usr/lib/python3.9/idlelib/run.py", line 559, in runcode
    exec(code, self.locals)
  File "/home/gilbert/Programmes/Python/crible_G.py", line 3, in <module>
    from fractions import gcd
ImportError: cannot import name 'gcd' from 'fractions' (/usr/lib/python3.9/fractions.py)

Pour le reste :

si $i$ est un nombre de Mersenne = $2^n -1$

Je suis parti du nombre X = 13016291257034383768171194373 du post au dessus ..

je récupère le PGCD = X ; puis on le met au carré et on ajoute 1 : (" donc on transforme le PGCD en  un nombre de Fermat ")

j'ai ce nombre de 86 digit :

X = 19283635235010757318836917200237668345470484572549790364309671655196725561403266082609 (86 digits)


$X^2+1$ qui serra divisible par 2 et un petit facteur premier  5, 13 .. 37... souvent inférieur à 41, mais on obtient un autre PGCD encore plus grand ....et ainsi de suite

X = 23875113860559757167662937759315939367424104813323103152324723911052620077274261982190596716880457550794712289293 (113 digits)

puis :

$X^2+1$ , donne le PGCD  X =

522940234641110080871440237169026575520056445068482721271514659620113046579137158316602265193446478575493707769537213347578599293266137328840297723950438194623421497640453023119295323273727844427406217 (201 digits)


$X^2+1$ =
273466489006499267 832361898879357151002069 267819429145867669189818 090938083709268339473377 741698138835813595246568 233560070532590024391761 648941990088923612330845 347587128317475619231482 151535276926055920510002 136167075931340016095041 440066546370552464102565 947409664313396740552674 437001195875434689244293 311785460720998204105111 396481312955938976921811 462299088961758337264233 320482765888370330251090 (402 digits) =
2 × 5 × 17 × 22921 × 61441 × 83680345945032973 × 13650227507023913855482568465061143226560716537647135962189698455945038749328492864900606446411070772037524295263706295300422004474877964178384810662707721917258889049396596743223617542361265300668342670604431057371869193023807253609944940345886264607243 605975490211409619446157793053381206971280518087242305729171812108290578577006176031527250696545091190485619947013440209 (
(374 digits) ; celui ci aucun résultat sur Alpertron.com au bout de 4h30 donc je suppose probablement prime....

#171 Re : Programmation » Résolution d'un polynôme de degré n dans Q et dans Z » 09-06-2021 17:45:57

LEG

@RAZAFINDRAFINDRA
Tu oublies ton sujet :

J'ai besoin d'aide pour la langage Python puisque je suis débutant. Alors mon sujet est " Élaboration d'un logiciel de résolution d'un polynôme de degré n dans Q et dans Z".

Et tu voudrais que @Yoshi te fasses ou t'aide à faire n'importe quoi.... et en plus : contraire à ton sujet ; qui dois par conséquent te dire et préciser si les racines sont dans Q ou Z...ou si il n'y en a pas...

#172 Re : Café mathématique » Découverte Constante Syracuse » 05-06-2021 09:32:36

LEG

Bonjour
36 est un multiple de 4 :

1): il ne peut pas être le premier terme ("première itération d'une suite $i$ des nombres impairs")

2): prend 34....Ta somme algébrique serra -32 ce qui correspond bien au 8 ème nombre impair > 1 , qui est 17. d'où : 2 - 34 = -32 =  8 * -4 = -32 suivante la suite arithmétique de l'AS2,  de raison -4

3): { 34 . 52. 26. 40 . 20. 10 . 16 .8 .4 .2 } ce qui donne le bilan négatif : +18, -26, +14, -20, -10, +6, -8, -4, -2, = 38 - 70 = -32

4): contrairement à ce que tu supposais 34 -32 = 2 et non 16....

les suites de Syracuse sont encadrées par les nombres impairs de la forme : $2^{n} - 1$ qui produit une transition T à l'itération au rang $n$
une transition est le changement de groupes de suites arithmétiques de raison : 6 ;18 ; 54 ; 162 ...etc par colonne d'itérations au rang $n$

ce qui donne :
au rang 1 , la suite arithmétique de raison 6 qui va indexé tous les vols au rang 1 et en partant du vol $2i$ -2  , -6 ,-10 etc l'ensemble des entiers relatifs...
au rang 2 , les deux suites arithmétiques de raison 18 et 6 dont la somme = $6* 4^{0} = 24$
au rang 3 , les quatre suites arithmétiques de raison 54 , 18 ,18 , 6 de la forme $6*3^{n-1}$ ; la somme = $6 * 4^{2} = 96$
au rang 4  , les huit suites arithmétiques de raison 162 , 18 ,54 ,54 , 54 , 6, 18, 18. la somme $6 * 4^{3} = 384$

Syracuse est structure arithmétique organisée par des suites arithmétiques et géométriques...

Quel est la valeur de l'itéré au rang $n$ de chaque transition T , correspondant à un vol $i = 2^{n} - 1$ ? réponse $6*3^{n -1} - 2$

Par exemple le vol $i = 2^{4}-1 = 15$ donc $2i = 30$ valeur de l'itération au rang n = 4 : $6*3^{4 -1} - 2 = 160$ ; ce qui implique 4 ascensions constante avant de tomber sur un multiple de 4 et de redescendre ...puis remonter ...etc .."oscillation" avant de finir sur  le bilan négatif  de raison  -4 , soit $2 - 2i$.

Ce qui veut dire que tu ne peux pas avoir un record d'altitude ni de durée de vol, puisque par principe tu tends vers l'infini avec les vols $2^{n} - 1$ en durée et en altitude constante avant de redescendre à l'itération T sur un multiple de 4. pour moi  : "" il n'y a rien à prouver ""
il y a le cycle 4.2.1 dans les entiers relatif positifs et 3 cycles dans les entiers négatifs ...point barre !

Ce qui permet de relier trois vols X , Y et Z par leur colonne d'itération ou par le rang $n$ suivant l'exemple de $i = 15$  au rang 4 tu relies les 3 vols  :
Y = -1 ; Z = -17  et X = 15 ;  [(2*Y = -2)  - (Z = -164) = X = 160 ] qui est bien la valeur pair de l'itération 4 du voli $i=15$. de l'AS2
   
i=15    ; 2i= 30 : itérés : 46     70    106    160

En prenant ton exemple avec le vol $ i = 107$, avec $2^{6}$ d'écart entre $X = 107$ , $Y = 43$ et $Z = -21$ on obtiendra au rang $n = 6$

i =107 ; 2i = [214] fonction de l'AS2 : 322 , 484 , 242 , 364 , 182 , 274

i =43 ;  2i = [86]    fonction de l'AS2 : 130 , 196 , 98 , 148 , 74 , 112

i = -21 ; 2i = [ -42] fonction de l'AS2 : -62 , -92 , -46, -68 , -34 , -50  donc : (2*112) - (-50) = 274

Voila tu sais tout...

Donc supposer, que pour la structure arithmétique de Syracuse avec sa fonction : qu'il pourrait exister un vol i qui ne peut redescendre sur son cycle 4.2.1 est tout simplement une supposition idiote, car elle est fondée sur aucun argument arithmétique...sauf si le père noël existe et qu'il a un argument rigoureux .

#173 Re : Café mathématique » Découverte Constante Syracuse » 03-06-2021 06:39:02

LEG

Bonjour
@Omhaf : cela fait des années que je ne m'occupe plus de la conjecture de Syracuse, car pour moi; même si on arrive pas à la prouver de façon rigoureuse elle est vraie. il n'y a qu'un cycle 4.2.1
C'est une structure arithmétique très simple qui a été démontrée par J.Rennucci sur " les Mathématique .net " il y a plusieurs années.
Si tu fais le bilan des valeurs montantes et descendantes tu trouveras une suite arithmétique de raison - 4 pour l'AS 1 et de raison -4 pour l'AS 2

C'est à dire: transforme l'AS1 Algorithme de Syracuse 1 classique : [ $3X + 1$ si $i$ impairs et $i/2$ si pair.]

En AS 2 utilisant que les nombres pairs tel que pour tout $i$ tu multiplies par 2 .
Ensuite tu appliques la séquence : A tout $N = 2i $ pair et non multiple de 4, nous appliquons la transformation : $(3*N+2)/2$
Si N est multiple de 4 nous passons à $N/2$ ce qui va créer une Tête de séquence:

Exemple pour $N = 27$ et $2i = 54$ on applique la transformation $(54*3 + 2)/2 = 82$, qui n'est pas multiple de 4, donc $(82*3 +2 ) / 2 = 124$ un multiple de 4.on obtient une nouvelle Tête de séquence = 62

Tête de séquences :
N=2i  :

54 : 82 ; 124 = 4m  ....> chaque séquence se terminera sur un multiple de 4 = 4m pour créer une nouvelle tête de séquences.
62 : 94 ; 142 ; 214 ; 322 ; 484 = 4m


242 : 364 = 4m
182 : 274 ; 412 = 4m
206 :   .....etc...et on réitère jusqu'à la dernière tête de séquence 4 et 2.
350 :
..
..
etc
..

4 :
2 :

Tu fais ensuite le bilan des différences positives et négatives des têtes de séquences, tu obtiendra une  valeur négative

52 + 8 = 62
62 +180 = 242
242 - 60 = 182

..etc ..

Pour 54=2*27, AS2 donne 30 séquences,

Une séquence est donc une pseudo suite géométrique parfaitement définie. On ne peut imaginer  qu’une suite géométrique puisse boucler sur elle-même ;
par conséquent si et seulement si, il existe une autre boucle que la dernière = 4.2.1 elle ne peut se produire que sur les têtes de séquences !!

[" On constatera aussi que la première colonne Tête de Séquence doit avoir résultat négatif entre la somme des différences positives et négatives. Le contraire ne ferait pas redescendre le vol sur le cycle (4,2). Ce qui donne la aussi entre tous les vols une « suite » de termes négatifs en progression arithmétique de raison -4 ; dont le premier terme du vol $i = 3$, est  - 4 , -8, -12….etc « la suite générale est de raison -4 »]
la valeur négative est donnée par la première séquence  2 - 2i = - x ; qui correspond au bilan de la somme des différences positives et négatives...etc.

Si on part du principe qu'il est inutile de démontrer une suite arithmétique car elle serra toujours vraie... On en déduit qu'il en serra de même de la structure arithmétique de Syracuse, donc chaque vol ou suite de Syracuse aura un bilan négatif tel que défini ci-dessus; soit pour l'AS1 ou l'AS2.

Bonne continuation .

#174 Re : Café mathématique » Exercice de proportion » 30-05-2021 07:12:37

LEG

Bonjour
Au vu de la réponse faîte à @Omhaf ,si tu ne veux pas être jugé, et si c'est ton problème...  pourquoi avoir questionné ?

En quoi le nombre de caractères d'une annonce publicitaire prouve la qualité d'un travail ? un ""margoulin"" peut t'enfumer et te vendre n'importe quoi avec une annonce bien présenté...! Comme beaucoup d'agents immobiliers, qui avec de belles annonces cachent la misère du bien à vendre...
Les annonces les plus courtes sont les meilleurs et l'acheteur va se fier à ce qu'il peut voir et non à ce qu'on lui raconte...

Pied de page des forums