Forum de mathématiques - Bibm@th.net
Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
#26 Re : Programmation » factorisation avec Python » 12-07-2025 18:30:54
Comme dit précédemment il n'y a pas de réponse simple... car soit on s'amuse à chercher le premier facteur de ce produit P*q de deux facteurs premiers ... , en utilisant tous les nombres premiers p-1, p-2 ....p-n < à racine carré du produit... soit on va sur un site comme (ex : https://www.alpertron.com.ar) qui utilise des moyens sophistiqués, probabilistes ...etc , et qui te donne une réponse en moins d'une seconde ou plus... en fonction de la valeur du produit...
Bon amusement...
#27 Re : Programmation » crible en python » 20-06-2025 12:37:07
re bon le plu dur est passé alors ... c'est bien . Oui pour le module Numpy pour python , je crois que l'IA de ChatGPT , l'a utilisé pour me refaire un des programmes python de Goldbach ... mais en définitive , elle m'a dit qu'ils était très performant et le dernier que j'ai donc posté au post 490 , il ne va pas plus vite ...
Par contre en C++ , cela m'a permis de gagner de la mémoire , un peu de rapidité par rapport au c++ d'origine que je lui ai fourni et qu'on utilise depuis plusieurs année maintenant...
Poses lui la question si tu reprends avec Numpy , mais concrètement , cela n'avance guère; elle a fait une version , qui après le teste était moins rapide que la version que l'on utilise ,. Tu verras qu'elle est pas mal du tout , avec de très bonne idées , et une retranscription complète du programme immédiatement.. mais attention à chaque modification qu'elle fait, teste la modif ..., afin de lui transmettre les erreurs éventuelles ...
je me suis bien amusé ... et c'est assez bien fait par les concepteurs de ChatGPT
voici les résultats pour les deux limites n criblées relatif aux deux entiers pairs 2n ; et en utilisant que les nombres premiers $p'\leq\sqrt{}$ ($\sqrt{n}$) limitant le nombre de p' à cribler , pour vérifier la conjecture par famille ... Les deux limites $n$ : 1): 3*10¹⁸ et 2): 1,25 *10¹⁹.
========= RESTART: /home/gilbert/Programmes/Python/Crible_EG2_mod30.py =========
Donnez n: 300000000000000000
7.903 secondes
39905622 nombres premiers >5 dans l'intervalle [1, sqrt600000000000000000
Nombre premiers p' criblés de 1 à sqrt (sqrt n) famille 7 : 322 ----- 27.64
Nombres p' non congru 2n[P] < sqrt (sqrt n) , ou couple p'+q = 2n, de (1) à sqrt de 300000000000000000 famille 7 : 20 ----- 27.37
========= RESTART: /home/gilbert/Programmes/Python/Crible_EG2_mod30.py =========
Donnez n: 12500000000000000007
92.867 secondes
234954220 nombres premiers >5 dans l'intervalle [1, sqrt25000000000000000014
Nombre premiers p' criblés de 1 à sqrt (sqrt n) famille 7 : 759 ----- 190.57
Nombres p' non congru 2n[P] < sqrt (sqrt n), ou couple p'+q = 2n, de (1) à sqrt de 12500000000000000007 famille 7 : 64 ----- 186.94
programme C++ et python légèrement modifié , pour ne cribler que les nombres premiers p' < (sqrt (sqrt N)) / 30 ; > 1,8... * 10¹⁹
https://www.dropbox.com/scl/fi/nsx3e3v8 … jcaad&dl=0
https://www.dropbox.com/scl/fi/rmxz9bod … u797o&dl=0
https://www.dropbox.com/scl/fi/vrvgkov1 … dd27e&dl=0
On peut utiliser n'importe qu'elle Famille , .. en fonction de la forme de n bien sûr , et j'ai remis le programme python de référence au #post 487 ci dessus .
Voici les résultats pour étayer la reformulation de la conjecture de Godbach avec sa preuve raisonnement par l'absurde :
Les 6 familles i[30] qui décomposent cet entier 2n = 4*10¹⁹ +14 ("sachant que la décomposition réel pour ce 2n et les suivants, est de plusieurs milliards de couples (p'+q) = 2n ")
Dans un premier temps ci dessous , on va vérifier la (Différence du Nombre de p' criblés < sqrt n ; avec < sqrt (sqrt n) ; même limite et même Fam :)
========= RESTART: /home/gilbert/Programmes/Python/Crible_EG2_mod30.py =========
Donnez n: 20000000000000000007
3355.241 secondes
293944255 nombres premiers >5 dans l'intervalle [1, sqrt40000000000000000014
Nombre premiers p' criblés de 1 à (sqrt n) famille 7 : 26407786 ----- 327.65
Nombres p' non congru 2n[P] < (sqrt n) , ou couple p'+ q = 2n, de (1) à sqrt de 20000000000000000007 famille 7 : 2067239 ----- 314.9
========= RESTART: /home/gilbert/Programmes/Python/Crible_EG2_mod30.py =========
Donnez n: 20000000000000000007
3026.564 secondes
293944255 nombres premiers >5 dans l'intervalle [1, sqrt 40000000000000000014
Nombre premiers p' criblés de 1 à sqrt (sqrt n) famille 7 : 840 ----- 271.16
Nombres p' non congru 2n[P] < sqrt n , ou couple p'+q = 2n, de (1) à sqrt de 20000000000000000007 famille 7 : 53 ----- 247.8
========= RESTART: /home/gilbert/Programmes/Python/Crible_EG2_mod30.py =========
Donnez n: 20000000000000000007
3010.016 secondes
293944255 nombres premiers >5 dans l'intervalle [1, sqrt 40000000000000000014
Nombre premiers p' criblés de 1 à sqrt (sqrt n) famille 1 : 826 ----- 268.92
Nombres p' non congru 2n[P] < sqrt n , ou couple p'+q = 2n, de (1) à sqrt de 20000000000000000007 famille 1 : 72 ----- 240.79
========= RESTART: /home/gilbert/Programmes/Python/Crible_EG2_mod30.py =========
Donnez n: 20000000000000000007
3014.276 secondes
293944255 nombres premiers >5 dans l'intervalle [1, sqrt 40000000000000000014
Nombre premiers p' criblés de 1 à sqrt (sqrt n) famille 11 : 832 ----- 262.46
Nombres p' non congru 2n[P] < sqrt n , ou couple p'+q = 2n, de (1) à sqrt de 20000000000000000007 famille 11 : 75 ----- 248.59
========= RESTART: /home/gilbert/Programmes/Python/Crible_EG2_mod30.py =========
Donnez n: 20000000000000000007
3137.63 secondes
293944255 nombres premiers >5 dans l'intervalle [1, sqrt40000000000000000014
Nombre premiers p' criblés de 1 à sqrt (sqrt n) famille 13 : 834 ----- 270.91
Nombres p' non congru 2n[P] < sqrt(sqrt n) , ou couple p'+ q = 2n, de (1) à sqrt sqrt de 20000000000000000007 famille 13 : 50 ----- 242.56
========= RESTART: /home/gilbert/Programmes/Python/Crible_EG2_mod30.py =========
Donnez n: 20000000000000000007
3395.321 secondes
293944255 nombres premiers >5 dans l'intervalle [1, sqrt 40000000000000000014
Nombre premiers p' criblés de 1 à sqrt (sqrt n) famille 17 : 837 ----- 269.78
Nombres p' non congru 2n[P] < sqrt(sqrt n) , ou couple p'+ q = 2n, de (1) à sqrt sqrt de 20000000000000000007 famille 17 : 63 ----- 246.48
========= RESTART: /home/gilbert/Programmes/Python/Crible_EG2_mod30.py =========
Donnez n: 20000000000000000007
3010.208 secondes
293944255 nombres premiers >5 dans l'intervalle [1, sqrt 40000000000000000014
Nombre premiers p' criblés de 1 à sqrt (sqrt n) famille 23 : 841 ----- 261.88
Nombres p' non congru 2n[P] < sqrt(sqrt n) , ou couple p'+ q = 2n, de (1) à sqrt sqrt de 20000000000000000007 famille 23 : 56 ----- 239.74
***************************************************************************************
Les derniers testes > 2*10^{19} avec différentes Fam i[30]
========= RESTART: /home/gilbert/Programmes/Python/Crible_EG2_mod30.py =========
Donnez n: 22500000000000000007
5834.833 secondes
310921528 nombres premiers >5 dans l'intervalle [1, sqrt 45000000000000000014
Nombre premiers p' criblés de 1 à sqrt (sqrt n) famille 23 : 859 ----- 289.05
Nombres p' non congru 2n[P] < sqrt(sqrt n) , ou couple p'+ q = 2n, de (1) à sqrt sqrt de 22500000000000000007 famille 23 : 71 ----- 267.14
========= RESTART: /home/gilbert/Programmes/Python/Crible_EG2_mod30.py =========
Donnez n: 25000000000000000007
6269.74 secondes
326939392 nombres premiers >5 dans l'intervalle [1, sqrt 50000000000000000014
Nombre premiers p' criblés de 1 à sqrt (sqrt n) famille 23 : 877 ----- 323.48
Nombres p' non congru 2n[P] < sqrt(sqrt n) , ou couple p'+ q = 2n, de (1) à sqrt sqrt de 25000000000000000007 famille 23 : 67 ----- 317.6
Pour n = 3*10¹⁹ + 17
========= RESTART: /home/gilbert/Programmes/Python/Crible_EG2_mod30.py =========
Donnez n: 30000000000000000017
24281.945 secondes
356633994 nombres premiers >5 dans l'intervalle [1, sqrt 60000000000000000034
Nombre premiers p' criblés de 1 à sqrt (sqrt n) famille 17 : 918 ----- 379.8
Nombres p' non congru 2n[P] < sqrt(sqrt n) / 30 , ou couple p'+ q = 2n, de (1) à sqrt sqrt de 30000000000000000017 /30 famille 17 : 73 ----- 377.34
Pour une estimation dans cette Fam 17 ; de : [83616273977991165 ÷ ln (2×30000000000000000017) = 1 836 070 820 079 689] couples p'+q =2N
On peut utiliser une formule d'estimation minimum du nombre de premiers $p'< N$ limite N fixée , pour utiliser le nombre de premiers $p'$ avec la fonction du TNP : $\frac{N}{Ln \;N}$ puis on utilise ce nombre de $Pn = p' < N$ estimé , pour en calculer le nombre minimum $Pn$ de $p'\not\equiv{2N}[P]$ , conséquence du TFA, qui implique par conséquent, le nombre de couples $(p'+q)$ qui décomposent ce nombre $2N$ , pour toutes limites $N>150$ criblées par famille $30k + i$.
La famille complémentaire est directement instruite par le principe de fonctionnement de l'algorithme dans les congruences.
Le nombre premiers $q$ complémentaires est environ de même densité ,mais légèrement inférieur , d'après le TNP : $\frac{N}{Ln \;2N}$ que la famille de premiers $p'$.
En effet: l'Algorithme de Goldbach ou la conjecture, est une conséquence du TNP et du TFA , le nombre d'entiers naturels positifs $A\not\equiv{2N}[P]$, de $1 \;à\; N$ est fonction du principe de décomposition unique, relatif au TFA (théorème Fondamental de l'Arithmétique ) :
Un entier $A$ est congru à 2N modulo P de façon unique à l'ordre près de ses facteurs .
On obtiendra donc , avec cette fonction : $\frac{Pn}{Ln \; (2*Pn)}$ ; ""qui est simplement un corollaire du TNP et du TFA (""à démontrer rigoureusement si c'est possible"") un nombre minimum de solutions $(p'+ q = 2N)$
Pour exemple : on a pour la limite N = 18 446 744 073 709 551 489 , criblée
l'estimation du nombre de $24 204 406\;p' < \sqrt{N}$ ; une estimation de $1 367 852 \;p'\not\equiv{2N}[P] $
Pour un nombre réel de 25 411 138 $p'$ criblés, jusqu'à cette (racine carrée de N , divisée par 30) = 2 400 447 $p'\not\equiv{2N}[P] $ dans cette famille $30k + 17$
Très Cordialement Gilbert
#28 Re : Programmation » crible en python » 19-06-2025 18:05:31
Re @Yoshi , donc si tu l'as téléchargé , est ce que tu peux créer le lien afin qu'il soit publié , avant que le lien que je viens de mettre ne soit plus actif , mais je vais voir si je peux aller sur ce site
voila ce que cela donne
programme C++ et python légèrement modifié , pour ne cribler que les nombres premiers p' < (sqrt (sqrt N)) / 30 , > 1,8... * 10¹⁹
https://www.dropbox.com/scl/fi/rmxz9bod … u797o&dl=0
https://www.dropbox.com/scl/fi/vrvgkov1 … dd27e&dl=0
Ok , c'est bon
Par contre c'est pas mal Chat GPT , pour faire modifier ou optimiser un crible . En ce qui me concerne pour lui poser aussi des questions, pour reformuler mon idée sur Goldbach
Ets ce que tu as essayé, de lui faire faire le crible de Goldbach , avec la version que tu voulais faire avec numpy ?
Sur les programmes en python que tu as écris , l'IA n' pas trouvé mieux pour les optimiser, mais je ne lui ai pas demandé avec numpy , car je ne sais pas comment lui expliquer .
les c++, par contre elle me les as repris , pour aller vers des limites n = 3X10²⁰ , j'ai essayé avec n = 3 x 10¹⁹ , ce qui est impossible dû à la limite en C++..??,
alors que pour la limite n = 3 x 10¹⁸ , c'est fait en 18 minutes ... ou un peu moins si on réduite le tableau De Ecrible à $\sqrt{}$($\sqrt{3*10^{18}}$).
Par contre en python on dépasse ces limites n...
Merci Yoshi , A + et passe une bonne soirée , leg
#29 Re : Programmation » crible en python » 19-06-2025 07:20:58
Re Bonjour :,
@Yoshi je viens de supprimer mon résumé posté hier après midi , que je remplace par le fichier suivant avec le lien de téléchargement ; ets ce que tu peux rendre ce pdf visible à durée indéterminé , ou copier le pdf pour l'inclure en latex sur ce post, sans que je sois obligé de télécharger un lien par semaine ; merci d'avance
programme C++ et python légèrement modifié , pour ne cribler que les nombres premiers p' < (sqrt (sqrt N)) / 30 et > 1,8...* 10¹⁹
#30 Re : Programmation » crible en python » 13-06-2025 10:33:52
Bonjour à tous,
Je vous remercie pour l’intérêt que vous portez à ce sujet.
Comme promis, je mets à disposition les deux versions modifiées des deux programmes Goldbach (Python et C++) du crible modulo 30 que j’ai construit en 2010 pour étudier la conjecture de Goldbach.
Puis en 2018 avec l'aide de notre bienfaiteur et modérateur Yoshi , qui m'a refait les programmes python , qui m'ont permis de les retranscrire en c++ ; dont je met la dernière version ci-dessous modifié et optimisé par chatGPT ce jour .
Ce crible permet d’analyser les entiers premiers dans une classe modulo 30 (1, 7, 11, 13, 17, 19, 23, 29), et de déterminer pour chaque valeur paire $2n$ si elle peut être exprimée comme une somme $p' + q$ où $p'$ et $q$ sont des nombres premiers dans une même famille modulo 30, , ou deux ; car $q$ le complémentaire de $p' \leqslant {n}$ par rapport à $2n$ , n'est pas obligatoirement de la même famille que $p'$ ; mais, où $p'$ n’est pas congru à $2n$ modulo 30, ce qui garantie , que son complémentaire $q$ est un nombre premier compris entre $n$ et $2n$
le choix de la famille , dépend de la valeur $n$ début un exemple ci dessous , qui est aussi expliqué dans le fichier joins par le lien suivant à durée limité jusqu'au 20.06.2025.
pour la valeur n = N de début :
N= 15k+1; Fam =(1,13,19); ⇒ 2n = 30k + 2 ⇒ 32 – 19 = 13 , ou 32 – 1 = 31 ⇒ la Fam complémentaire
N = 15k+2; Fam =(11,17,23); ⇒ 2n = 30k + 4 ⇒ 34 – 11 = 23 , ou 34 – 17 = 17
N = 15k+3; Fam =(7,29,13,23,17,19); 2n = 30k + 6
N = 15k+4; Fam =(1,7,19); 2n = 30k + 8
N = 15k+5; Fam =(1,7,13,19); 2n = 30k + 10
N = 15k+6; Fam =(1,11,13,19,23,29); 2n = 30k + 12
N = 15k+7; Fam =(1,7,13); 2n = 30k + 14
N = 15k+8; Fam =(17,23,29); 2n = 30k + 16
N = 15k+ 9; Fam =(1,7,11,17,19,29); 2n = 30k + 18
N = 15k+10; Fam =(11,29,17,23); 2n = 30k + 20
N = 15k+11; Fam =(11,23,29); 2n = 30k + 22
N = 15k+ 12; Fam =(1,7,11,13,17,23); 2n = 30k + 24
N = 15k+ 13; Fam =(7,13,19); 2n = 30k + 26
N = 15k+ 14; Fam =(11,17,29); 2n = 30k + 28
Je reste bien entendu à disposition si un mathématicien souhaite analyser ce fonctionnement ou l’approfondir. pour de grande valeur de début n > 3*10¹⁹
j'ai testé 2n > 3*10²² , que l'on peut incrémenté modulo 15 en saisissant :valeur début n et fin =valeur début +300 , l'algorithme effectuera le nombre de décomposition de $2n$successivement modulo 15 , ""ou par pas de 15"" , par famille choisit en conséquence .
Merci encore à la communauté BiBmath pour son aide précieuse.
voici le nouveau programme en c++
#include <vector>
#include <iostream>
#include <cmath>
#include <cstdlib>
#include <ctime>
using namespace std;
typedef unsigned long long ulonglong;
void fill_crible(vector<unsigned> &crible, unsigned p) {
crible.resize((p - 1) / 64 + 1);
size_t cs = crible.size();
unsigned lastnum = 64 * cs;
unsigned lastsieve = int(std::sqrt(double(lastnum)));
unsigned primesieved = 1;
crible[0] = 0xfffffffe;
for (size_t i = 1; i < cs; ++i)
crible[i] = 0xffffffff;
for (; primesieved <= lastsieve; primesieved += 2) {
size_t pos = primesieved / 2;
for (; pos < cs; ++pos) {
if (crible[pos / 32] & (1 << (pos % 32)))
break;
}
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) {
++p;
if (p % 2 == 0)
++p;
size_t pos = (p - 1) / 2;
size_t cs = crible.size() * 32;
if (2 * cs + 1 <= p)
return -1;
for (; pos < cs; ++pos) {
if (crible[pos / 32] & (1 << (pos % 32)))
return 2 * pos + 1;
}
return -1;
}
size_t ECrible(const vector<ulonglong> &premiers, ulonglong n, int fam, vector<bool> &crible, size_t lencrible) {
clock_t cl = clock();
size_t nbpremiers = premiers.size();
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 == static_cast<ulonglong>(fam)) {
produit /= 30;
break;
}
}
indices[i] = produit;
}
ulonglong nslices = lencrible / 45000000;
if (nslices == 0) nslices = 1;
for (ulonglong currentslice = 0; currentslice < nslices; ++currentslice) {
size_t slicelimit = (currentslice + 1 == 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 += static_cast<int>(crible[index]);
cout << " Nbr p' criblés Fam " << fam << " < à sqrt " << n << " : " << total << " time " << (clock() - cl) * 1e-6 << endl;
return total;
}
size_t GCrible(const vector<ulonglong> &premiers, ulonglong n, int fam, vector<bool> &crible, size_t lencrible) {
clock_t cl = clock();
size_t nbpremiers = premiers.size();
ulonglong n2 = 2 * n;
vector<ulonglong> indices(nbpremiers);
for (size_t i = 0; i < nbpremiers; ++i) {
ulonglong p = premiers[i];
ulonglong reste = n2 % p;
if (reste % 2 == 0) reste += p;
ulonglong pi2 = 2 * p;
while (reste % 30 != static_cast<ulonglong>(fam))
reste += pi2;
reste /= 30;
indices[i] = reste;
}
ulonglong nslices = lencrible / 45000000;
if (nslices == 0) nslices = 1;
for (ulonglong currentslice = 0; currentslice < nslices; ++currentslice) {
size_t slicelimit = (currentslice + 1 == 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 += static_cast<int>(crible[index]);
cout << "Nombre couple criblés famille " << fam << " entre " << n << " et " << 2 * n << " : " << total << " time " << (clock() - cl) * 1e-6 << endl;
return total;
}
int main() {
vector<unsigned> temp;
ulonglong debut = 3000000000000000;
ulonglong fin = 3000000000000015;
vector<int> familles = {7, 11, 13, 17, 19, 23, 29, 31}; // attention, on sélection les familles en fonction de la valeur n début
for (size_t 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 sqrt2N = sqrt(2.0 * static_cast<double>(limite));
fill_crible(temp, static_cast<unsigned>(sqrt2N));
vector<ulonglong> premiers;
for (ulonglong p = 7; p <= static_cast<unsigned>(sqrt2N); ) {
premiers.push_back(p);
p = nextprime(temp, static_cast<unsigned>(p));
if (p == static_cast<unsigned>(-1)) break;
}
size_t lencrible = static_cast<size_t>(sqrt(static_cast<double>(limite)) / 30.0);
vector<bool> crible(lencrible, true);
ECrible(premiers, limite, fam, crible, lencrible);
GCrible(premiers, limite, fam, crible, lencrible);
}
}
}
en c++ dans le programme on sélectionne toujours la famille modulo 30 compatible avec la valeur $n$ début , tel que 2n - fam i ne soit pas un multiple de 3 ou de 5.
exemple , pour n multiple de 30 les 8 famille sont compatibles mais si n = 30 001 , donc 2n = 60 002 seul 3 familles 1 sont compatibles, la famille i =1 ,13 ou 19.... etc ...cela est expliqué dans le pdf joint plus haut
------------------------
le nouveau programme en Python
from time import time
from time import perf_counter
from os import system
import math
def candidats(n):
#n = int(input("Entrez le nombre n "))
begin = perf_counter()
n1 = 2*n
length = int((n1)**0.5) // 3
if n%3 == 0 or n%3 == 1 and n%6 != 1: length -= 1
flags = [True] * length
number = 1
addition = 4
toggle = 6
for indexe in range(length):
number += addition
addition = toggle - addition
if not flags[indexe]: continue
start = (number * number *2 - 5) // 6
if start >= length: break
step = 2 * number
flags[start::step] = [False] * ((length - start + step - 1) // step)
advance = (indexe + 2) // 2
start += number - 2*advance + (indexe%2)*4*advance
flags[start::step] = [False] * ((length - start + step - 1) // step)
print(round(perf_counter()-begin, 3), "secondes")
print(f"{sum(flags)-1} nombres premiers >5 dans l'intervalle [1, sqrt {2*n}")
premiers = [2, 3] + [i//2*6+5+i%2*2 for i in range(length) if flags[i]]
#print(premiers[3:])
return premiers[3:]
def E_Crible(premiers, n, fam):
start_crible = time()
nbpremiers = len(premiers)
n1 = int(n**0.5) ## ou #n pour ne pas limiter à la racine carrée de n, le nombre de p' criblés
n2 = int(n1**0.5) ## pour générer un tableau de n/30 cases rempli de 1 ou, n1 = sqrt (sqrt n), puis n1/30
lencrible = n2//30 ## ou n//30 ; ou n1//30 pour augmenter le nombre de couples p'+q = 2n
crible = [1 for i in range(lencrible)] ## c'est plus propre comme ça
GM = [7,11,13,17,19,23,29,31]
## On calcule les produits :
for a in premiers:
for b in GM:
j = a * b
if j%30 == fam:
index = j // 30 ## Je calcule l'index et On crible directement à partir de l'index
for idx in range(index, lencrible, a): ## index qui est réutilisé ici...
crible[idx] = 0
total = sum(crible)
#print(nbpremiers)
#print("crible Ératosthène :", crible) ## pour éditer le tableau Ératosthène criblé
print(f"Nombre premiers p' criblés de 1 à sqrt (sqrt n) famille {fam} : {total} ----- {int((time()-start_crible)*100)/100}")
return crible,lencrible
def GCrible_2n(premiers, crible, lencrible, n, fam):
start_crible = time()
# On calcule les restes: r = 2*n/P
n2 = 2*n
for premier in premiers:
reste = n2 % premier
#print(reste)
if reste % 2 == 0:
reste += premier
p2 = 2*premier
## tant que reste % 30 != fam on fait reste += p2
while reste % 30 != fam:
reste += p2
## Ensuite on divise reste par 30 pour obtenir l'index
reste //= 30
## On crible directement à partir de l'index le tableau d'Ératosthène
for index in range(reste, lencrible, premier):
crible[index] = 0
total = sum(crible)
#print("crible É ET G:", crible) ## éditer le tableau criblé É et G
print(f"Nombres p' non congru 2n[P] < sqrt (sqrt n) , ou couple p'+q = 2n, de (1) à sqrt sqrt {n} famille {fam} : {total} ----- {int((time()-start_crible)*100)/100}")
def demander_n():
n = input("Donnez n: ")
n = int(n.strip().replace(" ", ""))
#n = int(30 * round(float(n)/30))
return n
def main():
## On demande n a l'utilisateur
n = demander_n()
## On récupère les premiers de 7 à √2n
premiers = candidats(n)
start_time = time()
## On crible
fam=7 ## ou 1, 7, 11, 13, 17, 19, 23, 29, au choix en fonction de n
crible,lencrible=E_Crible(premiers, n, fam)
GCrible_2n(premiers, crible, lencrible, n, fam)
main()
system("pause")
Proposition (Stabilité des solutions de Goldbach dans une famille modulo 30 lorsque la limite du crible progresse modulo 15 par Famille fixée, on définit $A\leq{n}$ , un entier naturel positif premiers p' ou pas, que l'on va cribler...d'abord par Ecrible qui élimine les $A\neq{p'}$ et ensuite par Gcrible , qui élimine les $p'\equiv{2nk}[p]$.)
Soit une famille fixée $Ff={p′∈N∣p′≡f\,mod30}$, où $f∈{1,7,11,13,17,19,23,29}$ est un résidu premier $modulo\; 30$.
On fixe un entier $n0$ assez grand et on considère les entiers pairs successifs de la forme
$2nk=2n0+30k$,avec $k∈N$.
On définit $Sf(nk)$ comme le nombre de décompositions de $2nk$ en une somme
$2nk=p′+q$,
avec $p′∈Ff $ et $q$ premier, sous réserve que $p′≤nk$ et que $p′$ et $q=2nk−p′ $ soient tous deux premiers, ce qui implique par conséquent $p'\not\equiv{2nk}[p]$
Alors, le crible appliqué à $Ff$ (d'abord par élimination des multiples de petits premiers $p≤2n0$ , puis par exclusion des $p′$ tels que $2nk≡p′modp)$ garantit la propriété suivante:
Si $Sf(n0)>0$, alors $Sf(nk)≥Sf(n0)$ pour tout $k≥1$.
Autrement dit, le nombre de solutions dans une famille modulo 30 ne peut pas décroître jusqu'à zéro , quand on fait croître $2n$ de $30$ en $30$ dans cette famille pour toute famille fixée et pour une limite $n\geq{150}$.
Cette propriété repose sur un fait crucial du crible : le décalage congruent $2nk↦2nk+1$ entraîne un simple décalage cyclique d'un rang des positions exclues $(modulo p)$, mais ne détruit pas d’informations afin de conserver l'égalité récurrente (2n – A) ⇔ (2n +30) – (A + 30) ,
équivalent à (A+30)$\not\equiv$(2N+30) [P] — les entiers non éliminés à l’étape précédente sont "réinjectés" aux mêmes intervalles.
? Conséquence heuristique forte :
Cette récurrence implicite induite par la structure du crible permet d’affirmer que pour toute famille valide $\;modulo\; 30$ et tout $n0$ fixé avec $Sf(n0)>0$, on a :
$v$ la conjecture de Goldbach.$∀k≥0,2nk=2n0+30k$ vérifie la conjecture de Goldbach.
Et donc, il devient impossible de rencontrer un entier pair $2n$ sans décomposition, dans la progression $2n0+30k$, pour une famille fixée.
Par conséquent, on peut affirmer : que $p'$ et $q$ premiers ne sont pas indépendant l'un de l'autre , car $q$ dépend de la congruence de $p'$ ainsi , la probabilité que :
$p'\not\equiv{2n}[P]$ ce qui implique $2n = p' + q$ vaut environ $\frac{1}{Ln\,n \,* \,Ln\,2n}$ ; d'où le nombre minimum de couples $(p' + q)$ par famille , vaut environ au minimum : ($\frac{n}{Ln\,n\,*\,Ln\,2n}$) / 8.
Car dans le cas contraire , cela implique qu'aucun entier $A\not\equiv{2nk}[p]$ ne précédait aucun $p'$ au rang $n-1; n-2; n-3 ...n-k$ lors des limites précédente $ n-1 ; n-2 ; n-3 ...n-k$ ce qui est contraire aux limites $n$ vérifiées précédemment , par l'algorithme de Goldbach.
Ce qui rend impossible la supposition que $2n + 2$ ou $2n + 30$ ne se décomposerait pas en une somme de deux nombres premiers.
Dernière version utilisant les _uint128_t pouvant tester des limites n = ou > 9*10¹⁸, en limitant les $p'<\sqrt{n}$ du crible Ératosthène , en peu de temps; avec le concourt aimable de l’équipe [chatGPT]
#include <iostream>
#include <vector>
#include <cmath>
#include <thread>
#include <cstdlib>
#include <mutex>
#include <ctime>
using namespace std;
typedef __uint128_t u128;
typedef unsigned long long u64;
mutex output_mutex;
void fill_crible(vector<unsigned> &crible, unsigned pmax) {
crible.resize((pmax - 1) / 64 + 1, 0xffffffff);
crible[0] &= ~1;
unsigned limit = sqrt(pmax);
for (unsigned i = 3; i <= limit; i += 2) {
if (crible[i / 64] & (1 << ((i / 2) % 32))) {
for (unsigned j = i * i; j < pmax; j += 2 * i) {
crible[j / 64] &= ~(1 << ((j / 2) % 32));
}
}
}
}
unsigned nextprime(const vector<unsigned> &crible, unsigned p) {
if (p <= 2) return 3;
for (unsigned i = p + 2; i < crible.size() * 64 * 2; i += 2) {
if (crible[i / 64] & (1 << ((i / 2) % 32))) return i;
}
return -1;
}
size_t ECrible(const vector<u64> &premiers, u128 n, int fam, vector<uint8_t> &crible) {
size_t len = crible.size();
vector<u64> indices(premiers.size());
int GM[] = {7, 11, 13, 17, 19, 23, 29, 31};
for (size_t i = 0; i < premiers.size(); ++i) {
u64 p = premiers[i];
for (int g : GM) {
u64 prod = p * g;
if (prod % 30 == static_cast<u64>(fam)) {
indices[i] = prod / 30;
break;
}
}
}
for (size_t i = 0; i < premiers.size(); ++i) {
u64 p = premiers[i];
for (size_t j = indices[i]; j < len; j += p) {
crible[j] = 0;
}
}
size_t total = 0;
for (uint8_t c : crible) total += c;
return total;
}
size_t GCrible(const vector<u64> &premiers, u128 n, int fam, vector<uint8_t> &crible) {
size_t len = crible.size();
u128 n2 = 2 * n;
vector<u64> indices(premiers.size());
for (size_t i = 0; i < premiers.size(); ++i) {
u64 p = premiers[i];
u64 r = static_cast<u64>(n2 % p);
if (r % 2 == 0) r += p;
u64 pi2 = 2 * p;
while (r % 30 != static_cast<u64>(fam)) r += pi2;
indices[i] = r / 30;
}
for (size_t i = 0; i < premiers.size(); ++i) {
u64 p = premiers[i];
for (size_t j = indices[i]; j < len; j += p) {
crible[j] = 0;
}
}
size_t total = 0;
for (uint8_t c : crible) total += c;
return total;
}
void traiter_famille(u128 n, int fam, const vector<u64> &premiers) {
clock_t start = clock();
cout << "Durée : " << (clock() - start) * 1e-6 << " s" << endl;
size_t lencrible = static_cast<size_t>(sqrt((long double)n)) / 30;
vector<uint8_t> crible(lencrible, 1);
ECrible(premiers, n, fam, crible);
size_t total = GCrible(premiers, n, fam, crible);
lock_guard<mutex> lock(output_mutex);
cout << "Famille " << fam << " pour n = ";
cout << (u64)(n / 1000000000000000000ULL) << "e18 : ";
cout << total << " p′ vérifiant conject (temps = " << (clock() - start) * 1e-6 << " s)" << endl;
}
int main() {
u128 debut = 1000000000000000020ULL;
u128 fin = debut + 45; // augmente la limite n par pas de 15
for (u128 n = debut; n < fin; n += 15) {
cout << "\n=== n = " << (u64)(n / 1000000000000000000ULL) << "e18 ===\n";
double sqrt2N = sqrt((long double)(2 * n));
vector<unsigned> temp;
fill_crible(temp, static_cast<unsigned>(sqrt2N));
vector<u64> premiers;
for (unsigned p = 7; p <= static_cast<unsigned>(sqrt2N); ) {
premiers.push_back(p);
p = nextprime(temp, p);
if (p == static_cast<unsigned>(-1)) break;
}
vector<thread> threads;
for (int fam : {7,1,13,19}) {
threads.emplace_back(traiter_famille, n, fam, cref(premiers));
}
for (auto &t : threads) t.join();
}
return 0;
}
programme C++ et python légèrement modifié , pour ne cribler que les nombres premiers p' < (sqrt (sqrt N)) / 30
pour une limite N = 1,8... * 10¹⁹
https://www.dropbox.com/scl/fi/rmxz9bod … u797o&dl=0
https://www.dropbox.com/scl/fi/vrvgkov1 … dd27e&dl=0
Bien cordialement,
Gilbert
#31 Re : Café mathématique » Automate de Collatz » 02-05-2025 08:35:58
Dans son travail de recherche du plus grand entier vérifiant la conjecture de Syracuse (5*2⁶⁰ )
....
Tu peux aussi t'amuser avec ce nombre qui vérifie la conjecture : $5*2^{127} - 1$ et ensuite avec un autre : $5*2^{521} - 1$...
#32 Re : Café mathématique » Automate de Collatz » 24-04-2025 07:35:57
EDIT : suis-je le seul à me rendre compte que le compteur de visites de ce fil est devenu complètement fou ?
Et alors ...?
Regarde un peu dans le sous forum programmation , crible en python ... tu as encore beaucoup de temps à attendre, de chemin à faire...
L'AS2 contrairement à ce que tu dis , a permis de démontrer que la conjecture de Syracuse est une structure Arithmétique simple J Renucci en 2010 ...
Ton automate n'a rien démontré ou, ne t'as pas permis de démontrer quoi que ce soit ; à part le fait de compter les itérations impairs ou le nombre de séquences paires ... donc pour terminer sur un seul pion.... et alors , tu vas nous raconter que l'automate ne calcul aucune itération avant de terminer sur un seul pion ..et qu'elle passe directement de X à 167 sans compter le nombre d'itérations ??
On ne peut même pas lui rentrer un nombre comme X = 1867863381 pour vérifier le nombre d'itérations qu'elle calcule...
Pour passer au terme suivant on est pas obligé de diviser par 2... il suffit d'utiliser l'AS2, de multiplier par 1,5 et de rajouter 1 pour terminer sur 16 ou plus simple ,on arrête de calculer la suite ("car miracle, on terminera sur 1") , lorsque l'on repasse sou la valeur 2i de départ; ou encore, lorsqu'une valeur paire a été vérifiée ... Ô miracle ... on terminera sur 1
Bonne continuation , amuse toi bien ....
#33 Re : Café mathématique » Automate de Collatz » 23-04-2025 09:09:30
@syrac:
Je ne vois pas où tu veux en venir avec les étapes paires.
C'est par ce que tu n'as pas compris , le développement de l'AS2, où sa fonction est : (2i *1,5)+1 si 2i n'est pas un multiple de 4; sinon : on obtient une tête de séquence si 2i %4 ==0
Ce qui permet de dire que ton automate calcul le nombre d'itérations impaires (normalement, je n'ai pas vérifié...) ; or elle calcul tout autant le nombre de séquences d'une suite de Syracuse de la fonction AS2, avant de terminer sur 2⁴ ... Ce qui est simple à vérifier .
Or si tu programmes l'AS2 , tu verrais que les séquences d'une suite de Syracuse , s'arrête dès qu'une valeur paires à été testée, ce que ne peut pas faire ton automate .
Donc si une suite Syracuse, à 1 milliard de séquences ou plus, ton automate ne s'arrêtera pas tant qu'elle n'arrive pas sur 2⁴...
Tu sais très bien , que si une valeur paire d'une séquence à déjà été vérifiée il est inutile de continuer ; donc le vol de Syracuse est terminé; et on passe à l'entier 2i suivant...
Comment voudrais tu qu'il existe un entier 2i où les valeur paires de ses séquences, ne passe jamais par une des valeur paires déjà vérifiée lors des séquences relatif aux 2i précédents... ou même un autre cycle que le cycle trivial de Syracuse 4.2.1.
Dans les 2i négatifs , il y a trois cycles .. Tu penses que c'est un hasard ?
C'est simplement le résultat de cette structure arithmétique et de sa fonction 3i+1 , ou chaque suite de Syracuse a toujours une relation bien précise et déterminée avec deux autres suite..! demande à ton automate de te dire , à quel rang d'itération une suite de Syracuse relie deux autres suite S...
Par exemple : le vol i = -1 , avec le vol i = 31 et le vol i = -33 quel rang d'itération relie ces trois suites de Syracuse X; Z; Y...?
etc etc...
Exemple de l'AS2 , avec les vols X, Y Z pour les entiers 2i , avec i de 5 à 21 :
2X - Y = Z avec une écart entre deux suite de 2^n
..............i
Z:... 11: 21 42 64 32 16
....... 10: 19 38 58 88 44
....... 9: 17 34 52 26 40
....... 8: 15 30 46 70 106
X.... 7: 13 26 40 20 10
...... 6: 11 22 34 52 26
...... 5: 9 18 28 14 22
...... 4: 7 14 22 34 52
Y .... 3: 5 10 16 8 4 2
Tu peux aussi rentrer l'entier i = 2^133 – 1 et tu demandes à ton automate le nombre d'ascensions constantes et l'altitude atteinte au rang impair R = 133, soit 132 ascensions constantes pour une altitude de ((3¹³² * 6) - 2)
Ou le dernier nombre de Mersenne M53 = 2^n - 1 , avec l'exposant n = 77 232 917 ascensions constantes pour une l'altitude au rang de l'exposant ((3^n * 6) -2) qui risque, de faire exploser l'automate, si elle ne grippe pas "" je rigole ""
#34 Re : Café mathématique » Automate de Collatz » 22-04-2025 15:45:49
Bonjour
Cela n'aurait aucun intérêt de désolidariser l'automate de la fonction de Syracuse... puisque qu'elle utilise le même principe que l'AS2 (algorithme de Syracuse 2, que J Renucci avait présenté il y a plusieurs années sur les mat .net)
Le nombre d'itérations de l'automate représente le nombre de séquences paires à l'exception des têtes de séquences jusqu'à 2⁴ = 16 que j'ai posté plus haut au post #33 , page 2 , avec le nombre 2i = 54 il y a 41 séquences ""paires""
le dernier nombre d'une séquence est toujours un multiple de 4 , ce qui occasionne une tête de séquence : TS
Démontrer l'automate ou Syracuse et tout autant difficile , mais comme Syracuse est une structure Arithmétique simple, l'automate suis les règles Arithmétiques de la fonction de Syracuse ...
La question qui reste : pourquoi une structure Arithmétique simple , se mettrait à dérailler..? Tout comme l'automate qui suit les mêmes règles ...
TS . séquences
54 . 82 124
62 . 94 142 214 322 484
242 . 364
182 . 274 412
206 . 310 466 700
350 . 526 790 1186 1780
890 . 1336
668 .
334 . 502 754 1132
566 . 850 1276
638 . 958 1438 2158 3238 4858 7288
3644 .
1822 . 2734 4102 6154 9232
4616.
2308 .
1154 . 1732
866 . 1300
650 . 976
488 .
244 .
122 . 184
92 .
46 . 70 106 160 . ("on repasse sous la valeur de départ on pourrait s'arrêter là.")
80 .
40 .
20
10 . 16....
#35 Re : Café mathématique » Automate de Collatz » 21-04-2025 07:19:19
Bonjour
@syrac , je pense que tu pousses un peu loin le bouchon..!
Et quand bien même parviendrait-on à insuffler la conscience à une IA, à quelle existence serait-elle vouée ? À celle qu'elle déciderait, sans s'occuper de l'humain ...
Une seule personne au monde envierait-elle le sort d'une machine consciente de son inhumanité, de sa solitude et de la servitude éternelle à laquelle elle est condamnée ? Demande ça aux politicards , ils doivent avoir une bonne raison pour te donner une réponse idiote , ça fait plus de 2000 ans que les esclaves les nourrissent et écoute leur conneries, tout pays confondu...
Une machine dédiée à fournir 24/24 des réponses à des milliards d'imbéciles sans jamais obtenir de leur part quoi que ce soit de gratifiant ?
C'est pourtant bien ce que fait l'humanité , qui continue à engraisser des abrutis qui gouvernent pour leur bien être ...
Mais il est vrai qu'après avoir fait subir ce même sort à des millions de sauvages et de nègres, nous ne sommes plus à quelques IA près
C'est par ce que tu continus à faire comme eux , en traitant ces individus (" de sauvages et de nègres ") tu as besoins d'utiliser ce langage pour désigner des personnes réduite à l'esclavage de force ??? ou tu es une IA : Imbécillité Artificielle ..?
Pour en revenir à ton sujet , prouves déjà que ton automate utilise le même processus que la fonction de Syracuse , et , que si elle converge alors la conjecture de Syracuse convergera aussi, donc elle serait vraie... Je pense que tu es loin de démontrer ce phénomène ou ce lien directe entre les deux..!
#36 Re : Café mathématique » Automate de Collatz » 03-04-2025 11:00:17
D'où l'intérêt de mon automate ! :-)
En quoi ?
Que je sache il est quand même loin de démontrer Syracuse ...
Donc c'est un automate point barre , qui ne vérifie rien , comme tu l'as dit.... même si il pousse un peu plus loin, le chimiliblic
#37 Re : Café mathématique » Automate de Collatz » 03-04-2025 08:17:14
Bonjour.
Bonsoir,
Suite à cette discussion, je me suis intéressé au truc et j'ai trouvé un état des lieux ma foi fort bien fait
C'est une Excellente idée , je trouve très instructif et objectif ce document de recherche sur cette conjecture ...
Voila enfin , une superbe référence dans le monde de Syracuse ...
Effectivement il y a de gros écarts entre certains Mathématiciens et Amateurs , qui pensent avoir trouvé la démonstration , lorsque l'on voit la multitude de conjectures que l'origine de Syracuse a générée , ainsi que les questions que l'on peut se poser à propos de cette conjecture ...
"" Je dirai que c'est radical comme désherbant... ""
#38 Re : Café mathématique » Automate de Collatz » 02-04-2025 15:41:17
Re je me suis peut être mal exprimé ...
Quelque soit la suite de Syracuse , ou pour tout N , c'est à dire , que je suppose que ton automate lorsque tu lui soumet un entier N , il ne fait que suivre l'itération de Syracuse avant de descendre sur le cycle 4.2.1. qui est donc = 1 le déplacement des pions est terminé , donc cette suite de Syracuse à vérifiée la conjecture.
Au fur et à mesure , on test tous les entiers N. Tous ces entiers on bien vérifié cette conjecture, où, si je comprend bien le but de ton automate , il converge vers l'entier 1 . ou si tu préfère , vers le cycle 4.2.1 et pas un autre. Donc pas de vol de Syracuse infini ni en altitude... ce que je n'ai pas dit.
Par contre tous ces entiers N testé par ton automate, créaient au fur et à mesure de leur itération des nombres pairs et impairs avant de terminer sur 1.
On peut donc dire que la probabilité qu'un entier N , qui au court de ses Itérations , ne repasse pas par un entier qui a déjà été itéré et par conséquent qui est redescendu sur 1, lorsque N tends vers l'infini et quasiment nul , autrement dit, la probabilité de la véracité de Syracuse tend vers 100/100 vraie lorsque N tend vers l'infini et non l'inverse... C'est d'ailleurs l'opinion de la communauté Mathématique .
D'où ton automate pourrait dire , que lorsque un pion = un nombre à déjà été vérifié , elle termine le test donc = 1 .
ce qui accélère la vérification de l'automate, réduit le temps, sans avoir besoins de déplacer les pion jusqu'à 1 ...
Tu peux même te passer des nombres N impair en commençant directement à 2n avec la même formule , légèrement modifié pour ce cas précis . Cela restera toujours la même structure Arithmétique, simple, Algorithme de Syracuse 2.
("Toute suite obtenue à partir d’un nombre N = 2*i (i impair) par l’algorithme AS2 est la suite des nombres pairs du développement du nombre i par AS1.")
Nous désignerons cet algorithme par AS2, AS1 étant l’algorithme classique et bien connu de
Syracuse.
Tableau 1 obtenu pour N =2*27 : Ts = têtes de séquences une séquence est finie :
si (3*2i)/2 %4 == 0, on divise par 2, donc on a une Ts = tête de séquence , il y en 30 pour N = 27
N= 2i, puis :
2i * 1.5 +1 = 2N si 2N%4 n'est pas égal à 0 on continue l'itération ou on déplace le pion...etc etc .
lorsque 2N est < au 2i de départ on termine , l'automate indique =1 ou encore si on passe sur un nombre pair , ayant été tester , itéré sur une suite de Syracuse inférieur , (ce qui implique peut être, d'avoir en mémoire tous les 2N vérifiés ... 2i = 6)
Ts
54 . 82 . 124.
62 .94 . 142 .214 . 322. 484.
242 . 364
182
206
350
8903
668
334
566
638
3644
1822
4616
2308
1154
866
650
488
244
122
92
46
80
40
20
10
8
4
2
On obtient ainsi, par séquences successives, et dans leur ordre d’apparition, tous les pairs de
la suite de Syracuse relative au nombre 27.
Ceci est généralisable à tout nombre 2i (i impair); toute séquence est obligatoirement finie ...etc
Bonne continuation.
#39 Re : Café mathématique » Automate de Collatz » 02-04-2025 08:42:23
Bonjour
Apprendre des bêtises , c'est apprendre de ses bêtises ...
Le raisonnement d'un spécialiste dans son domaine ne peut être évalué que par un spécialiste du même domaine
Ben alors , il faut poser la question à l'IA ... ou à ses concepteurs , mais il me semble , que ce ne sont justement pas des spécialistes de l'IA qui la critique ni même leurs concepteurs
Qui t'as dit , qu'ils commencent les Maths par une conjecture ??
En quoi le fait de ne pas avoir un niveau suffisant en Math est une interdiction à analyser ,tester , apporter des raisonnements , construire un algorithme etc etc ... faire part de sa propre idée sur une conjecture ?
Ben : Une conjecture n'est justement pas L'Everest... il n'y a pas besoin d'oxygène ou autre affabulation pour s'y intéresser ... De plus avec de l'entrainement des personnes on réussis à atteindre le sommet ...!
Tu connais un super matheux qui avec plus de 40 ans de connaissances Mathématique à atteint la démonstration d'une de ces conjectures : Syracuse , Godlbach et autres conjecture ouvertes ...?
Lorsque tu vas au cinéma pour regarder un film , tu apprends quoi ??
La vie est un apprentissage tout au long de son existence ou tant que ses facultés le permettent.
Tu as cité le moyen âge , pourquoi ne pas s'en inspirer ... tu penses que Ératosthène , à trouvé ses idée de factorisations par miracle ?
Pourtant c'était un profane ...et qu'est ce que l'on fait plus de 2000 ans après avec des "" supers "" niveaux de Maths ? et ben on continue à utiliser son crible faute d'en avoir trouvé un plus performant ...(je ne parle pas d'algorithmes probabiliste très performant)
Tous les chemins mènent à Rome ..., des faciles pour certains et des plus difficiles ou plus rigoureux pour d'autres , ou encore moins "" em ...dant "" et alors ?
J'ai quitté l'école à 13 ans et demi avec un certificat d'étude de l'époque , pour aller travailler , je n'ai même pas appris les notions d'algèbre ... le modérateur peut te le confirmer...
Puis plus de 50 ans plus tard je me suis amusé ,à m'intéresser à l'arithmétique , uniquement les entiers naturels . avec des conseils ou des discutions d'un prof de Maths et autres , de la lecture basique sur les nombres et la théorie des nombres que je pouvais comprendre ...etc
Est ce pour autant que j'ai été incapable de construire , découvrir mes algorithmes Ératosthène , puis celui de Goldbach , crible : qu'aucun Matheux n'a découvert et construit , avec des propriétés différentes de celui d'Ératosthène ...
Demande un peu et renseigne toi auprès du modérateur , les problèmes qu'il a rencontré pour m'aider et effectuer le programme , du fait de mon absence de connaissances Mathématique pour lui répondre à ses questions ...
Tu te figure que je suis resté sur le toit de ma baraque pour lui répondre correctement , c'est justement ce que vous faite dans vos critiques en oubliant de vous renseigner , uniquement par ce que vous pensez être de bons Matheux ... Ce qui pour moi je ne le pense pas !
Car Un bon Matheux , c'est une personne capable de faire comprendre des math ou de l'arithmétique à un profane sans connaissance de bases, pour le conseiller et non pas pour pé... plus haut que lui ...
Bonne journée,
("En attendant d'améliorer l'Automate , pour nous dire lorsque N tend vers l'infini , vers quoi tend la probabilité de cette conjecture 100/100 vraie ou fausse ? on peut aussi n'utiliser que les nombres pairs , pour gagner en vitesse et en mémoire, ou encore lorsque l'itération tombe sur un pion déjà utilisé ... donc qui est arrivé sur 1, on stop et on passe au 2N suivant ...etc .
Il parait évident que l'on va tendre vers 100/100 vraie , car ne pas retomber sur un nombre pair , qui n'a pas fini sur 1 et quasiment impossible ...")
#40 Re : Café mathématique » Automate de Collatz » 01-04-2025 07:59:23
Bonjour
Ben justement, apprendre des bêtises , c'est le meilleur moyen de ne pas en commettre ... ce qui impose d'y revenir plusieurs fois ... sauf si on est borné .
Il y a beaucoup de spécialistes qui ont des raisonnement tout autant stupide qu'une IA , vouloir les comparer à l'humain est ridicule ... c'est bien d'ailleurs pour ça que tu les utilise..
Le jour ou des concepteurs construiront une IA évolutive on pourra en reparler, en espérant qu'elle ne soit pas trop évoluée pour nous mettre au rebut ...
Les shtamers comme tu les appels sur ton site favori , ne se posent pas autant de question idiotes , même si ils n'ont pas les bases rigoureuses d'un matheux digne de ce nom, ils n'ont pas l'habitude de mettre tout le monde dans le même sac...
Lorsqu'il construise un algorithme pour l'utiliser sur une conjecture , je doute fort qu'il commence à l'envers ou par la fin , leur programme ... C'est peut être ton cas ... mais ce n'est pas pour autant qu'il faut généraliser , à défaut de devenir aussi un shtamer...
#41 Re : Café mathématique » Automate de Collatz » 31-03-2025 12:48:57
Petit rappel :
si l'apport de L'IA est ridicule pour une conjecture , qu'en ait t'il de ces détracteurs ?
lorsque l'on est pas en capacité de comprendre les programmes de L'IA qui en est qu'à ces début , cela revient à dire que les spécialistes en programmation de L'IA ne sont pas plus intelligent que leur machine et qu'ils perdent leur temps inutilement...
Mais @Vassillia et Cailloux qu'en ait il de vos compétences dans ce domaine ... à part des critiques idiotes , sans compétences ?
Il faut peut être que tu suives tes propres conseils et que tu te documentes , tu as fait référence au professeur Marseillais ... tu as ses compétences ... ?
Ou tu ne fait que radoter et rapporter les commentaires des journalistes ?
PS : personne ne t'as demander de lire les élucubrations d'amateurs , car franchement ton avis , ils en ont rien à faire ...
N'oublies pas que les spécialistes lisent les documentaires écrits par d'autres , afin de s'en faire une idée ou d'en trouver une, leur permettant de faire avancer la conjecture.
Mais ce n'est pas pour autant , qu'ils trouveront la solution, sinon depuis le temps, il y a belle lurette que ces conjectures n'en serait plus...
Peut être que Syrac a voulu dire que les commentaires de cailloux , c'est comme jeter un caillou dans l'eau , ça fait plouf ... Il a préféré la lune ....
#42 Re : Café mathématique » Automate de Collatz » 31-03-2025 11:28:50
RE
@Vassillia : moi aussi je ne partage pas ton avis... je vis essayer de te dire pourquoi :
Ce ne sont pas les amateurs qui méprisent qui que ce soit, professionnels ou non , mais les ""professionnels"" Mathématiques qui méprisent les mateurs sous prétexte qu'ils ne devaient pas être passionné par une conjecture ; qui avec leur moyens , auraient le tort de faire partager leurs idées ... quel quelles soient !
Un Forum sert justement à cela, au partage d'idées , avec un modérateur pour corriger éventuellement .
Il n'est pas réservé à qui que ce soit , amateurs ou professionnels , par contre le mépris d'autrui n'a jamais rien apporté d'intelligent ...!
Tu fais allusion aux politiques .... lorsque l'on voit dans quel état ils ont mis leur pays tous gouvernements confondus par goût de la corruption et de la finance, je pense que là, c'est une plaisanterie comme référence , de même que les religions , qui pour moi sont les deux fléaux de l'humanité mais, surtout pas une référence en quoi que ce soit ...
L'IA , c'est comme l'automobile ou autre technicité , ce n'est que le début; quand bien même elle est programmé pour l'instant, par des spécialistes de ce domaine...
Espérons pour les soit disant scientifiques , Matheux ou autres disciplines , qu'elle ne les dépasse pas , car je pense que beaucoup, pourraient mettre leur mouchoir dans la poche... Si un jour elle a la capacité de se programmer elle même ...
Ce n'est pas par ce que l'on fait d'une discipline son métier , ou que l'on a plus de connaissances qu'un amateur (encore Heureux ) que tous les dires se valent ... seul des prétentieux peuvent le croire...
Un amateur ne dira jamais , qu'un scientifique dans son domaine n'est pas plus crédible que n'importe qui ... (" il faut être idiot pour le croire") , car Bien souvent et c'est dommage, ils s'en chargent eux même ; ce n'est pas les exemples qui manquent à ce bouffer la gueule entre eux...!.
#43 Re : Café mathématique » Automate de Collatz » 31-03-2025 08:47:22
Bonsoir yoshi,
Que Rescassol soit dans l'erreur, peut-être. Mais pas moi !
.
Heureusement que l'on est plus au temps de l'inquisition... car avec un soit disant matheux comme toi, tu nous aurait fait envoyé au bûcher pour sorcellerie...
C'est vraiment triste de constater que certain personne qui se dise ""mathématicien"" en soit réduit a de piètres explications , pour se prouver à elle même qu'elle sont compétente en la matière .
Alors que tu n'es même pas foutu de mettre en défaut cet algorithme , ou un autre..., probablement à cause d'une jalousie imbécile , qui limite tes capacités .
Sache pour ta gouverne que je n'ai jamais été proscrit d'un forum de Mathématique, c'est simple à vérifier je n'en fréquente que 2 celui ci et celui des Mathématiques . net ...
Ais au moins la preuve de tes accusations idiotes ....
En ce qui me concerne et l'algorithme de Goldbach , puisque tu y fais allusion , j'ai au moins eut le mérite d'intéresser des centaines de milliers de lecteurs ... contrairement à toi qui est incapable d'intéresser qui que ce soit, ou encore , de pondre un sujet intéressant ...
Dommage que tu sois un pitoyable matheux incapable d'imaginations ... pour construire de tels algorithmes, ou simplement de les comprendre...
#44 Re : Café mathématique » Automate de Collatz » 30-03-2025 09:13:27
Bonjour:
@cailloux :
Je pense qu'au lieu de critiquer les réponses de L'IA, il serait plus intelligent de mettre en défaut ses réponses et dire pourquoi elles sont fausses ...non?
Au moins , on verrait si l'algorithme "misérable " de @Syrac à un défaut , ou si il tend vers l'infini .
Ce n'est pas par ce que cette conjecture n'est pas démontrée , qu'il n'existe pas un algorithme , qui quelque soit l'entier positif qu'il doit traiter, il ne redescend pas sur le cycle trivial , 4.2.1 . ou que l'on pourrait montrer qu'il va redescendre au bout d'un certain nombre d'itérations... et ce, quelque soit l'altitude qu'il pourrait atteindre avant de commencer à redescendre ...
Le seul souci ce n'est pas l'algorithme en lui même qui fait défaut , mais qu'il n'existe aucun matériel qui puisse calculer à l'infini...
Pas plus , qu'aucun Mathématicien professionnel, "misérable ou pas" ; n'a pu à ce jour , démontrer qu'il existe bien une démonstration rigoureuse, relatif à cette conjecture ...
Obsession ou pas , le mérite est de rester objectif et de persévérer...
Bonne continuation
#45 Re : Café mathématique » Nombres premiers » 21-03-2025 18:08:36
J'aurai aimé publier dans ce forum la formule générant tous les nombres premiers ...
il existe une multitude d'algorithmes qui génèrent tous les nombres premiers... Ce qui m'étonne, c'est que tu n'as pas l'air de le savoir... ni qu'il n'existe aucun calculateur , avec une mémoire infinie... pour générer tous nombres premiers inférieur à $10^{1000000000}$ au minimum....
Mais tu peux afficher un nombre premier de 400 chiffres avec ta formule si le coeur t'en dit .... ou si tu peux , avec la preuve qu'il est bien premier ....
Bonne continuation...
#46 Re : Programmation » crible en python » 19-03-2025 17:14:23
Bonjour
@Yoshi ; je viens de faire un test avec cet algorithme de Goldbach en prenant la limite n à cribler $10^19 + 16 en utilisant la famille 7 modulo 30
et et ça passe... alors qu'avec le programme en c++ , lorsque je saisie la même valeur j'ai un beug...
voici le résultat avec python pour $10^{19}$ et un peu plus...:
Comme tu le vois en définitive on pourrait tester cette conjecture au minimum jusqu'à une limite $n=10^{30}$ sans souci avec un calculateur et par famille... Ce qui n'a jamais été fait... En utilisant ce principe , c'est à dire, il est inutile d'utiliser tous les nombres premiers < à n pour cribler la congruence de ces nombres premiers..
Le plus long c'est dans la première partie du programme Ératosthène , pour l'extraction des nbr Primes $\leqslant\sqrt{n}$) que l'on va utiliser ensuite pour cribler .... que je viens de modifier voir ci-dessous
Par exemple ce programme est très rapide ("en l'adaptant a la première partie du programme Goldbach en référence actuel post #478") avec la même limite N ,
Je l'ai modifié pour cribler jusqu'à la racine carrée de 2n, afin d'utiliser les nombres premiers inférieur à racine de 2n.
il ne met que 60 seconde pour extraire les nombre premiers $\leqslant\sqrt{2n}$ au lieu de 3600 dans le programme actuel ...
======== RESTART: /home/gilbert/Programmes/Python/3. Gcrible . mod 2.py ========
Entrez le nombre maximum 4472135954 = racine de $2n$ , pour n = 10000000000000000016
66.302 secondes
211260428 nombres premiers dans l'intervalle [1, 4472135954
(" la première partie (def Ératosthène utilise 98% de la mémoire ram...) Donc impossible d'aller plus loin...")
https://www.dropbox.com/scl/fi/rmxz9bod … b65yg&dl=0
Ça y est j'ai réussi a inclure ce petit programme à la place de la première partie actuelle , pour retourner les nombres primes ou premiers [3:] , comme le fait la première partie du programme actuel , ci-dessous , en lui incluant aussi from time import perf_counter: ..
.
J'ai modifié des lignes de programme dans cette fonction programmée, pour qu'il le prenne en compte dans le programme actuel au post #478 , ci-dessus :
Voila le nouveau programme de référence et le résultat pour la même limite n
from time import time
from time import perf_counter
from os import system
import math
def candidats(n):
#n = int(input("Entrez le nombre n "))
begin = perf_counter()
n1 = 2*n
length = int((n1)**0.5) // 3
if n%3 == 0 or n%3 == 1 and n%6 != 1: length -= 1
flags = [True] * length
number = 1
addition = 4
toggle = 6
for indexe in range(length):
number += addition
addition = toggle - addition
if not flags[indexe]: continue
start = (number * number *2 - 5) // 6
if start >= length: break
step = 2 * number
flags[start::step] = [False] * ((length - start + step - 1) // step)
advance = (indexe + 2) // 2
start += number - 2*advance + (indexe%2)*4*advance
flags[start::step] = [False] * ((length - start + step - 1) // step)
print(round(perf_counter()-begin, 3), "secondes")
print(f"{sum(flags)+2} nombres premiers dans l'intervalle [1, sqrt{2*n}")
premiers = [2, 3] + [i//2*6+5+i%2*2 for i in range(length) if flags[i]]
#print(premiers[3:])
return premiers[3:]
def E_Crible(premiers, n, fam):
start_crible = time()
nbpremiers = len(premiers)
n1 = int(n**0.5) ## ou # n1 = n pour ne pas limiter à la racine carrée de n
## pour générer un tableau de n/30 cases rempli de 1 ; ou n1 = racine carrée de n, puis n1/30
lencrible = n1//30
crible = [1 for i in range(lencrible)] ## c'est plus propre comme ça
GM = [7,11,13,17,19,23,29,31]
## On calcule les produits :
for a in premiers:
for b in GM:
j = a * b
if j%30 == fam:
index = j // 30 ## Je calcule l'index et On crible directement à partir de l'index
for idx in range(index, lencrible, a): ## index qui est réutilisé ici...
crible[idx] = 0
total = sum(crible)
#print(nbpremiers)
#print("crible Ératosthène :", crible) ## pour éditer le tableau Ératosthène criblé
print(f"Nombre premiers p' criblés de 1 à sqrt de n famille {fam} : {total} ----- {int((time()-start_crible)*100)/100}")
return crible,lencrible
def GCrible_2n(premiers, crible, lencrible, n, fam):
start_crible = time()
# On calcule les restes: r = 2*n/P
n2 = 2*n
for premier in premiers:
reste = n2 % premier
#print(reste)
if reste % 2 == 0:
reste += premier
p2 = 2*premier
## tant que reste % 30 != fam on fait reste += p2
while reste % 30 != fam:
reste += p2
## Ensuite on divise reste par 30 pour obtenir l'index
reste //= 30
## On crible directement à partir de l'index le tableau d'Ératosthène
for index in range(reste, lencrible, premier):
crible[index] = 0
total = sum(crible)
#print("crible É ET G:", crible) ## éditer le tableau criblé É et G
print(f"Nombres p' non congru 2n[P] < sqrt n , ou couple p'+q = 2n, de (1) à sqrt de {n} famille {fam} : {total} ----- {int((time()-start_crible)*100)/100}")
def demander_n():
n = input("Donnez n: ")
n = int(n.strip().replace(" ", ""))
#n = int(30 * round(float(n)/30))
return n
def main():
## On demande n a l'utilisateur
n = demander_n()
## On récupère les premiers de 7 à √2n
premiers = candidats(n)
start_time = time()
## On crible
fam=7 ## ou 1, 7, 11, 13, 17, 19, 23, 29, au choix en fonction de n
crible,lencrible=E_Crible(premiers, n, fam)
GCrible_2n(premiers, crible, lencrible, n, fam)
main()
system("pause")
----------------------------------------------------------------
pour n = 1,75*10¹⁹
========= RESTART: /home/gilbert/Programmes/Python/Crible_EG2_mod30.py =========
Donnez n: 17500000000000000017
1264.982 secondes
275816079 nombres premiers >5 dans l'intervalle [1, sqrt35000000000000000034
Nombre premiers p' criblés de 1 à sqrt de n famille 7 : 819 ----- 241.28
Nombres p' non congru 2n[P] < (sqrt (sqrt n))/30 , ou couple p'+q = 2n, de (1) à sqrt sqrt de 17500000000000000017 famille 7 : 71 ----- 227.42
fichier pdf modifié :
programme C++ et python légèrement modifié , pour ne cribler que les nombres premiers p' < (sqrt (sqrt N)) / 30
#47 Re : Café mathématique » Volume citerne elliptique » 08-02-2025 15:03:49
Ok :
Et bien si ta règle est graduée , tu connais don la hauteur H du liquide restant dans ta citerne ...
Avec les formules qu'il y a sur internet par exemple sur terre -net .fr , tu connais la hauteur du volume restant , qu'il te suffira de renseigner ...
Exemple en cm , diamètre de ta citerne D =100 cm , Longueur L=200 cm , Hauteur du liquide H =100cm c'est à dire qu'elle est pleine ...
Volume = 1570 ,8 Litres
Supposons qu'il ne te reste que 40 cm de liquide et ben : D = 100 ; L = 200 et H = 40 ; Volume restant = 586 ,74 Litres ....
La formule Mathématique n'est pas indiquée , mais seul le résultat t'intéresse .....
#48 Re : Café mathématique » Volume citerne elliptique » 08-02-2025 10:18:15
Bonjour
@ Omhaf
Il me semble que tu te compliques la tâche ... moi, ""en m'amusant"" j'aurait fait ceci :
1)
Sauf erreur, le volume d'une citerne avec fond plat = $\pi * r²* L$ , L ou H étant la Longueur ou Hauteur de ta citerne .... et non le niveau calculé ....
2)
Donc si ta citerne est debout avec un fond plat et le niveau $C$ restant , ton volume restant, serra = $\pi * r²* C$ non ..?
3)
Si ta citerne a des fonds en forme d'ellipse il te faut la profondeur de l'ellipse.... ("d'où , sans dire de bêtises ") il te faut en Cm :
le Diamètre , la Longueur de la cuve , la Profondeur de l'ellipse et le Niveau restant de liquide ,
4)
Puis tu appliques la formule Math correspondant à une citerne avec fond en forme d'ellipse ...
Volume d'une ellipse 4/3 * pi * A * B * C , avec A = profondeur de l'ellipse , B = rayon et C = demi hauteur de la cuve
.... Je pense que notre ami Yoshi va te donner la formule Mathématique ... Ou qu'un matheux me corrige.... Je rigole ...
Bonne journée ....
#49 Re : Café mathématique » Calcul des investissements nécessaires pour générer 1000€ par mois » 28-01-2025 18:08:27
Bonjour
Va plutôt demander à un spéculateur de trader ... IL VA TE LES FAIRE GAGNER TES 1000€ en restant passif .... Sinon tu peux planter des patates , attendre qu'elles poussent et tu les revends ... à 3€ le kg , tu as vite fait de calculer combien il va te falloir en planter , pour générer un profit de 1000€.... Bon courage, tu peux rester passif et demander à quelqu'un de faire le travail pour toi ...
#50 Re : Enigmes, casse-têtes, curiosités et autres bizarreries » Conjecture de Goldbach vraie ou indécidable ? » 12-12-2024 07:49:37
Au détriment de tous ce qui a été cité qui est P . Dans quel intervalle appartient t'il ? À tu une preuve de son existence dans l'intervalle en question ?
Bonjour :
À qui tu t'adresse ?
P , est bien défini ...
De quel intervalle tu parles ?
Peux tu reprendre la phrase complète..
Relis les deux fichiers joins ci-après
le 27.06.2025







