Forum de mathématiques - Bibm@th.net
Vous n'êtes pas identifié(e).
- Contributions : Récentes | Sans réponse
Répondre
Résumé de la discussion (messages les plus récents en premier)
- Grifix
- 01-04-2024 10:31:15
[Salut LEG,
Bon point de vue, intéressant à lire.
Sur Riemann j’ai déjà entendu parler du côté innovant des moyens mis en œuvre pour la démonstration.
Pour le reste sur tes capacités ben t’es trop modeste.
Bye bye
- LEG
- 01-04-2024 10:03:56
Bonjour
@Grifix :Tu as dit avoir introduit une limite à 4 Milliards....... tres dur question mémoire non?
Pas du tout avec un PC et le programme en C++ , j'ai poussé jusqu'à la limite $n$ = 18000 000 000 000 , mais par famille $30k+ i$ avec $i\in(1,7,11,13,17,19,23,29)$, bien entendu on donne uniquement par famille, le nombre de $NP$ inférieur à $n$
Effectivement , dans l'absolu on est obligé d'utiliser Ératosthène pour être sûr à 100% . Il n'existe aucune solution pour obtenir la réponse ultra rapide afin de déterminer la primalité d"un très grand entier naturel $n$ positif, lorsque $n$ tend vers l'infini.
Le fait de rechercher une amélioration des algorithmes de recherche de grand $NP$ , c'est pour entre autre, trouver des méthodes , pour la cryptographie...etc etc , d"ailleurs même la conjecture de Riemann , n'apporterai rien sur la répartition des nombres premiers, juste une meilleur estimation ... mais les moyens utilisés pour la démontrer pourrait être "" intéressants "".... etc
Ce n'est que l'avis d'un amateur, n'étant absolument pas "Matheux" , je m'arrête à l'arithmétique élémentaire tout simplement ...
Bonne journée.
- Grifix
- 31-03-2024 23:01:21
Bonjour
C'est pour cela que pour un grand $NP$ probable , il y a des algorithmes Probabilistes et ensuite pour êtcre rigoureusement sûr à cent pour cent , il n'y a pas d'autres choix que de tester ce $NP$ avec tous les $NP\leqslant\sqrt{NP}$ . (Par exemple: les nombre de Mersenne ou Wagstaff...etc)
C’est super intéressant ce que tu dis là parce que cela veut dire, si j’ai bien compris, que dans l’absolu pour une certitude à 100% on en revient en somme aux méthodes plus traditionnelles.
Mon avis personnel en étant pas du tout spécialiste est le suivant.
Sachant qu’il existe une infinité de nombres premiers il ne sert à rien de trouver des méthodes qu'elles quelles soient tant qu’on a pas trouvé une formule explicite donnant le xieme NP d’une manière instantané.......et encore une formule pour des nombres infinis donnerait un temps infini d’execution!!!!!
Je vois mal comment sortir du dilemme. Sans compter qu’une mémoire pour stocker cette information serait aussi infini ce qui est totalement hors de portée.
La réponse à cette recherche sur les NP est pour moi plus de l’ordre du méta-quelquechose que d’ordre mathématique.
Je peux répondre maintenant à la formule sur les impairs non premiers que j’ai annoncé comme une "forme de rêve". Elle est pour moi une sorte de découverte du Yin, le Yang étant une formule qui concernerait les NP proprement dits
Mais il faut bien avouer qu’elle ne vaut pas plus que d’annoncer que si l’on choisi 2 nombres impairs très grands X et Y le résultat Z = X×Y sera un nombre impair non premier.
Elle a peut-être le mérite d’être une table de multiplication de plus, bien particulière non?
Alors que cherchons nous tous dans cette recherche sur les NP ?
Je ne parle même pas du Graal que représente la résolution de la Conjecture de Riemann !!!
Aller je vous laisse trouver et ce ne sera pas bien dur de donner la réponse d’autant plus que l’on est Lundi de Pâques et que par voie de conséquence rien ne presse.
Bonnes fêtes à tous et gaffe au chocolat !!!!!
- Grifix
- 31-03-2024 19:56:46
j'ai utilisé ton premier programme en début du sujet jusqu'à n = 15 000 000 ... Car le lien du serveur ci-dessus , lorsque je rentre 200 il m'indique arrêt ...etc , mais ce n'est pas grave ... Bonne continuation ...
PS , Si cela t'intéresses : Tu peux regarder sur la page 2 de ce forum , (Crible en Python LEG) ,les algorithmes que j'ai fait et que Yoshi à eut la gentillesse de me faire les programmes... Je ne suis absolument pas programmeur ... (tu vas directement sur la page 16)... il y en a aussi en C++.
Je suis allé voir et je suis désolé je n’ai carrement pas le niveau de math.
C’est très largement au dessus de mes compétences.
Je suis convaincu qu’il te serait plus facile d’apprendre un langage de programmation vu tes compétences intellectuelles que d’avoir recours à un pote pour mettre un programme au point .
De plus tu me parles d’algorithme et de ce que j’ai pu lire je n’y ai vu que des programmes écrits en Python ou basic si je ne me trompe.
Honnêtement avec un cerveau comme le tiens tu devrais ingurgiter un langage en moins d’1 mois et en tirer le strict nécessaire des notions essentielles pour travailler.
Cdlt
- Grifix
- 31-03-2024 19:09:49
j'ai utilisé ton premier programme en début du sujet jusqu'à n = 15 000 000 ... Car le lien du serveur ci-dessus , lorsque je rentre 200 il m'indique arrêt ...etc , mais ce n'est pas grave ... Bonne continuation ...
PS , Si cela t'intéresses : Tu peux regarder sur la page 2 de ce forum , (Crible en Python LEG) ,les algorithmes que j'ai fait et que Yoshi à eut la gentillesse de me faire les programmes... Je ne suis absolument pas programmeur ... (tu vas directement sur la page 16)... il y en a aussi en C++.
Moi aussi puisque je suis dentiste en retraite :)))
Promis je vais aller voir.
Tu as dit avoir introduit une limite à 4 Milliards....... tres dur question mémoire non?
Moi ma tablette plante à 800 Millions si je me rappelle.
Merci.
- LEG
- 31-03-2024 18:17:36
j'ai utilisé ton premier programme en début du sujet jusqu'à n = 15 000 000 ... Car le lien du serveur ci-dessus , lorsque je rentre 200 il m'indique arrêt ...etc , mais ce n'est pas grave ... Bonne continuation ...
PS , Si cela t'intéresses : Tu peux regarder sur la page 2 de ce forum , (Crible en Python LEG) ,les algorithmes que j'ai fait et que Yoshi à eut la gentillesse de me faire les programmes... Je ne suis absolument pas programmeur ... (tu vas directement sur la page 16)... il y en a aussi en C++.
- Grifix
- 31-03-2024 17:08:23
Re @Grifix
j
je viens d'essayer de copier /coller ton programme dans Code::bloc , que j'utilise pour mon programme ÉRATOSTHÈNE en C++ ,
pour comparer le temps d'exécution, avec celui que j'utilise...
il ne me sort aucun résultat , sauf
oui = 1 non = 0:"" c'est peut être pas le bon répertoire ""
j'ai rentré la limite n = 4000000000 ...
Il fonctionne pourtant:
Je te l’ai mis sur un serveur externe ici : https://www.online-cpp.com/kZXFoKncyR
J’ai pas d’ordi valable donc je fais ces programmes sur une tablette Android avec Cxxdroid.
La limite superieure à été testée à 160000000 en 4s sur android
Je n’arrive pas à insérer des photos de mon album photo sur ce fil pour preuve.
Le calcul se fait soit avec affichage soit sans.
Le temps d’Affichage étant très long essayes déjà sur un intervalle court en sélectionnant par ex une limite à 200
Si tu choisis un intervalle très grand il ne commencera à afficher que lorsque le calcul sera terminé.
Il est très certainement probable que tu aies l’impression que rien ne se passe parce que le programme n’a pas fini de pédaler car tu as rentré un intervalle très grand.
Ne choisis pas d’affichage et tu tomberas sur la seconde partie où tu pourras tester la primalité d’un nombre en particulier.
Bien à toi.
Cdlt
- LEG
- 31-03-2024 16:36:09
Re @Grifix
j
je viens d'essayer de copier /coller ton programme dans Code::bloc , que j'utilise pour mon programme ÉRATOSTHÈNE en C++ ,
pour comparer le temps d'exécution, avec celui que j'utilise...
il ne me sort aucun résultat , sauf
oui = 1 non = 0:
"" c'est peut être pas le bon répertoire ""
j'ai rentré la limite n = 4000000000 ...
- Grifix
- 31-03-2024 13:10:44
@Wiwaxia
"Tu pourrais réutiliser g(x, z) = (2x + 1)(2z + 1) avec cette fois 1 < x ≤ z ; il vaudrait mieux toutefois que tu envisages un test de primalité applicable à tout entier impair."
Et ben figures toi que j’y pense depuis 48 heures.
Excellente idée
- Grifix
- 31-03-2024 13:06:41
Pour preuve Wiwaxia.....
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <math.h>
#include <sys/param.h>
#include <new>
int main()
{
long int val,comptageNP=0,j;
int X,Y,test,affiche=0;
printf ( "Programme Personnel basé sur le programme de recherche des NP à partir des carrés des precurseurs aux NP. \nVeuillez insérer un nombre limite en dessous duquel tous les nbres premiers seront calculés : " ) ;
scanf("%lu", &val);
printf(" Affichage Oui = 1 Non = 0 : ");
scanf(" %d", &affiche);
bool * Tableau2 = new bool [val];
time_t debut = time(NULL);
X = val - (val % 6);
Y=sqrt(X);
/*TABLE MULTIPLICATIVE
multiplication par saut de 2 avec saut de multiples de 3
(i%3) à l’intérieur des compteurs de boucle i et j
*/
for (long int i =5 ; i <= Y; i = i + 2)
{
if ( i % 3 == 0)
i = i+2 ;
j = i * i;
while(j<= X)
{
Tableau2[ j ] = 1;
j = j + 2*i ;
if (j%3 == 0)
j = j + 2*i;
}
}
printf ("\n");
time_t fin = time(NULL);
printf ("\nTemps de recherche : %d secondes ", fin- debut);
/* AFFICHAGE ET COMPTAGE
lecture 5//11//17//23 puis //7//13//19//25 etc
*/
for ( long int i = 5 , j = 7 ; i <= X ; i = i + 6 , j = j + 6 )
{
if (Tableau2[ i ] ==0)
{
comptageNP++;
if (affiche == 1)
printf("\n i = %ld", i);
}
if (Tableau2[ j ] ==0)
{
comptageNP++;
if (affiche == 1)
printf("\n j = %ld\t", j);
}
}
printf ("\n %d nombres premiers trouvés sur une recherche de 5 à \n%d",comptageNP,val);
boucle :
printf("\n\n\n tester la primalité d’un nombre ou entrez 0 pour sortir : ");
scanf("%d", &test);
system("cls");
if (test == 0)
return 0;
else if ( test == 2 || test ==3 )
{
printf("\n le nombre à%d est premier",test);
goto boucle;
}
else if (test % 2 ==0 || test % 3 ==0 || Tableau2[test]==1)
{
printf("\n le nombre %d est composé",test);
goto boucle;
}
else
{
printf (" le nombre %d est premier",test);
goto boucle;
}
}
- Grifix
- 31-03-2024 13:01:01
Merci à tous.
@LEG
Je suis conscient des vérités dites ici et j’ai déjà fait des petits programmes plus légers avec un algorithme pur Eratosthene bien évidemment plus légers en éliminant les multiples de 2 et 3 pour rejoindre Wiwaxia.
Nul doute que vous avez raison.
Quand aux tests probabilistes j’en ai entendu parlé mais j’ai clairement pas le niveau.
Pour ce qui concerne le rêve il est bien entendu modeste mais parfois réinventer l’eau chaude quand on découvre par soi même les choses c’est pas si mal.
Maintenant pour poursuivre le sujet des rêves il y a des façons en dehors des maths de les vivre et vous devez en savoir quelque chose certainement.
Merci pour la bibliographie je vais ouvrir ça dans l’AM.
- Wiwaxia
- 31-03-2024 10:35:08
Bonjour,
Satisfait de te savoir sorti d'affaire. J'ai connu moi aussi il y a un peu plus d'un an les surprises insoupçonnées d'un séjour à l'hôpital.
Le programme, quoique discutable, montre ta maîtrise du langage employé (le C, si j'ai bien compris). Il est bien exhaustif au sens où tous les entiers impairs composés inférieurs à un certain seuil sont donnés par la fonction g(x, z) (moyennant quelques précautions).
Tu es parti sur la liste des entiers impairs. Tu pourrais faire l'économie de 33% des calculs en te restreignant à la liste des entiers non pultiples de 2 et 3 , donc de la forme (6k + 1) ou (6k + 5) - ou ce qui revient au même: ( 6k ± 1) ; la liste s'énonce très rapidement si l'on tient compte de ce que les écarts entre deux termes consécutifs valent alternativement (2) et (4):
5 / 7 // 11 / 13 // 17 / 19 // 23 / 25 // 29 / 31 // 35 / 37 // 41 ...
Tu pourrais réutiliser g(x, z) = (2x + 1)(2z + 1) avec cette fois 1 < x ≤ z ; il vaudrait mieux toutefois que tu envisages un test de primalité applicable à tout entier impair.
Tu pourrais consulter avec profit le site Rosetta Code, qui présente plusieurs centaines de sujets traités dans un grand nombre de langages.
https://fr.wikipedia.org/wiki/Rosetta_Code
Pour la liste complète de ces derniers, consulter https://rosettacode.org/wiki/Category:P … _Languages ;
pour l'index des sujets, se reporter à https://rosettacode.org/wiki/Category:Programming_Tasks ,
et regarder du côté de "Primality ..." - d'autres algorithmes intéressants peu faciles à débusquer figurent peut-être dans la liste ... C'est un peu la caverne d'Ali Baba, et les algorithmes proposés sont parfois décevants - mais le détour en vaut la peine.
https://rosettacode.org/wiki/Sieve_of_Eratosthenes
Pour toute vérification de la liste des nombres premiers:
https://oeis.org/search?q=prime+numbers … o=Chercher
http://compoasso.free.fr/primelistweb/p … online.php
- LEG
- 31-03-2024 10:34:29
Bonjour
Si le début du sujet avait pour but, d'extraire les nombres premiers $NP$ inférieur à une limite $n$ fixée à partir de tes multiples impairs , je ne pense pas qu'il y est une part de rêve ...
Tous les cribles élémentaires, sont basés sur le principe du crible d'Ératosthène...
Il y en a de très simples et moins lourd que ce que tu proposes ...
C'est pour cela que pour un grand $NP$ probable , il y a des algorithmes Probabilistes et ensuite pour être rigoureusement sûr à cent pour cent , il n'y a pas d'autres choix que de tester ce $NP$ avec tous les $NP\leqslant\sqrt{NP}$ . (Par exemple: les nombre de Mersenne ou Wagstaff...etc)
- Grifix
- 30-03-2024 20:02:07
Résultat :coliques nephretiques pendant 8 jours sans arrêt......absolument jouisif je vous assure suite à une erreur de diagnostic.
Wiwaxia a effectivement démontré la possibilité de redondances Multiples et je m’en doutais
fortement mais cela apparemment n’est guère mieux qu’un algorithme pur Eratosthene.
Donc pas forcément un gain quelconque!
Et pour déterminer la primalité d’un nombre élevé il est évident qu’il faut sortir tous les précédents.
Merci Wiwaxia.
En tout cas peut-être l’intérêt est d’apporter un peu de rêve et peut-être de compacter le code autant que faire ce peut.
Merci à tous.
- Wiwaxia
- 30-03-2024 17:07:31
Bonjour,
... j’ai écrit ce programme qui utilise une fonction qui donne tous les impairs non premiers.
C’est celle ci:
f(x,y) = (2x + 1 + y)² - y²
Il faudrait démontrer qu’elle ne donne pas de doublons ...
Étant définie par la différence de deux carrés, la fonction f(x, y) se factorise facilement:
f(x, y) = (2x + 1)(2x + 1 + 2y) = (2x + 1)(2(x + y) + 1) ;
un simple changement de variables permet d'en simplifier l'expression; il suffit en effet de poser z = x + y pour obtenir
f(x, y) = (2x + 1)(2z + 1) = g(x, z) , avec z ≥ x
si l'on part des entiers naturels.
On voit immédiatement que pour tout entier impair composé admettant deux facteurs nécessairement impairs
g(x, z) = p * q , avec p ≤ q ,
il vient:
x = (p - 1)/2 et z = (q - 1)/2
Les doublets multiples apparaîtront dès lors que l'entier impair considéré admet plus de deux facteurs premiers; par exemple:
7429 = 17*19*23 = 17*437 = 19*391 = 23*323 .
Pour 5005, il y a 7 doublets.
La démarche proposée est une variante compliquée du crible d'Ératosthène.
Et si tu veux te prononcer sur la primalité d'un entier impair quelconque (par ex. 1000003), il te faudra établir la liste complète de tous ceux qui précèdent ... cela risque de devenir lourd ...