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).

Répondre

Veuillez composer votre message et l'envoyer
Nom (obligatoire)

E-mail (obligatoire)

Message (obligatoire)

Programme anti-spam : Afin de lutter contre le spam, nous vous demandons de bien vouloir répondre à la question suivante. Après inscription sur le site, vous n'aurez plus à répondre à ces questions.

Quel est le résultat de l'opération suivante (donner le résultat en chiffres)?
vingt deux plus cinquante huit
Système anti-bot

Faites glisser le curseur de gauche à droite pour activer le bouton de confirmation.

Attention : Vous devez activer Javascript dans votre navigateur pour utiliser le système anti-bot.

Retour

Résumé de la discussion (messages les plus récents en premier)

BAKKAOUI HASSANE
12-05-2019 23:02:34

Bonjour
Dans la quête des grands nombres premiers voici un nombre de 4692 de chiffres
chercher d'abord sur PARI GP puis vérifier sur python  
n = 2^7789
k = 300  
p = kn(n+1)-1-2kq  
q =  314
Durée : 6 h 29 min 20 s
le second
Aussi calculer sur pari gp
un nombre de 9442 de chiffres    
n = 2^15678
k = 300
p = kn(n+1)-1-2kq  
q =  1582

La versification sur python a pris 28h sans donner une réponse définitive puis j’ai interrompue le test

BAKKAOUI HASSANE
06-05-2019 21:49:17

Bonjour
Yoshy
La liste R dans votre script poste numéro 45 page 2. Si on arrive à associer pour chaque nombre premier, les variables :n, k q qui lui correspondent.
Je pense une étude statistique pourra nous donner une réponse s’il y a une quelconque relation entre les différents variables, bien sûr j’en ai aucune idée de ce que peut donner cette étude mais puisque notre formule est probabiliste la meilleure approche c’est l’étude statistiques

yoshi
06-05-2019 18:55:06

Re,

pour cela j’ai besoin d’un script avec pour chaque nombre premier produit avec la formule, les différentes variables associées

Alors là, tu n'es vraiment pas clair : je ne comprends vraiment pas ce que tu voudrais avoir...
R est un langage dédié notamment aux statistiques, mais ça reste un langage interprété comme... Python.
La vitesse d'exécution de Python peut varier du simple au décuple ! Pour le projet de LEG, j'avais repris le script Python de départ, et j'ai fini par diviser les temps d'exécution par 50...
De plus, tu ne connais de Python que la partie supérieure de la partie émergée de l'iceberg...
Avec Python sont disponibles un nombre considérable de bibliothèques additionnelles qu'il suffit
1. De savoir qu'elles existent
2. De les télécharger
3. De les installer.
Selon ce que tu cherches exactement, existe probablement une bibliothèque spécifique qui te rendrait les mêmes services que R... Et j'ai lu que les fonctionnalités de R sont accessibles depuis Python. Je n'en sais pa plus..

@+

BAKKAOUI HASSANE
06-05-2019 17:48:38

Bonjour après une telle récréation plus où moins longue voici le résumé de la situation :
J’ai appris à me servir de python un peu j’en ai vérifier la formule sur différents k jusqu’à maintenant la tendance est que la formule marche quelques que soit k mais il n’y a pas de forme de k privilégié qui produit avec la formule plus de nombres premiers ou qui donne des nombres premiers avec des q plus petit. Pour avoir une vision plus globale je vais faire une étude statistiques avec le logiciel libre R , pour cela j’ai besoin d’un script avec pour chaque nombre premier produit avec la formule les différents variables associés , je suis arrivé à ce stade de mon projet j’espère trouver d’autres aventuriers qui veulent bien m’accompagne.

BAKKAOUI HASSANE
30-03-2019 17:45:23

Bonjour

Voici un exemples de nombre premier  calculer par python

K=180300
n=2^1234
p = kn(n+1)-1+2kq =
15777021792926978558327593873422892491252371175725557718726631326772359240369472850345217262675145089944487701225920630196052088590966696652360001617966004795065227898284199683706837774042501363301800880290859124285605360444119679524696619074824540557333844803526883365288139152973722584815214168203556482905172057859567537763099417958338695904166824321509348581203113075096789626351277311152994900328466626124174807853637886100335870119696832094518415783658103869082504702740516512306118345429824996169702882679531589261618039324617890000063631208308921519268632354486692934023315846793652351095177371709097804669968455637239110077675069680207131144852776759678947206832501403759419327382433352046831971210227701295092392232425317700765390898466799
q =  458
Durée : 0 h 2 min 34 s


Exemples avec des k différents :

q de 0 à 7
n de 180300 à 181301
k= 171
p=kn(n+1)+1+2kq ---> 693
p=kn(n+1)-1+2kq ---> 793
p=kn(n+1)+1-2kq ---> 615
p=kn(n+1)-1-2kq ---> 682


q de 0 à 30
n de 180 à 181301
k= un nombre de Mersenne [tex]M_{67}[/tex]=  147573952589676412927

p=kn(n+1)+1+2kq ---> 834
p=kn(n+1)-1+2kq ---> 793
p=kn(n+1)+1-2kq ---> 891
p=kn(n+1)-1-2kq ---> 763



q de 0 à 30
n de 180 à 181301
k= 286208998628034 une séquence de décimale de pi

p=kn(n+1)+1+2kq ---> 1568
p=kn(n+1)-1+2kq ---> 1518
p=kn(n+1)+1-2kq ---> 1544
p=kn(n+1)-1-2kq ---> 1558




Rappel :

Notre objectif ultime est d’appréhender q, pour faire les moins de tests possibles dans la recherche d’un nombre premier par la formule,
Pour cela, j’en ai trouvé trois approches:

Une approche géométrique :
Comme je vous ai expliqué précédemment. On a dit chaque k différent crée un sous ensemble de P, dont les  nombres constituent peuvent être représentés sous un même polygone.
(Je sait sans illustration, c’est difficile d’avoir une idée claire)

Deuxièmement : une approche analytique, pour chaque k différent, on lui attribue un certain nombre de fonction polynomiales définies dans R+.
k prédéfini 
x ——>[tex]f_0(x)[/tex] = kx(x+1)       (q=0)
x ——-> [tex]f_1(x)[/tex]=kx(x+1)-2*k  (q=1)
x ——-> [tex]f’_1(x)[/tex]=kx(x+1)+2*k 
( on négligeant le [tex]\pm1[/tex])
x ——->[tex] f_2(x)[/tex] =kx(x+1)-4*k  (q=2)
x ——-> [tex]f’_2(x)[/tex]=kx(x+1)+4*k 
..
... etc (jusqu’à 2N+1 fonctions)

Et puis tracés dans N (ensemble N) 
n ———> f(n) = p sur le même graphique.
(Même échelle bien sûr)

On remarquera comment p ne prends pas n’importe quel valeurs de N (ensemble N)
Il passe d’un niveau à un autre.
On peut faire ici une analogie avec les élections dans le noyau .
Et comment le maximum de désordre qui règne dans l’ensemble P, conduit à un ordre qu’on peut le définir.

Et finalement l’approche statistiques :
A l’aide d’un logiciel libre comme R. On aura besoin d’une base de données de taille conséquente ou figure les variables suivantes pour chaque nombre premier :
Légende :
p: nombre premier
i : son rang
N: nombre de chiffres de p
n : nombre de niveau = longueur de chaque  côté
k: nombre de côtés /2
q : si q =0 donne polygone régulier
s: [tex]\pm1[/tex] qu’on appèlera le spin
J: prends les valeurs 0 ou 1 pour montrer si c’est jumeau           ou pas si j= 1 p et p+2 sont jumeaux. sinon j= 0.

L’idéal est quand arrive à constitué un tableau de type :
p, i, N, n, k, q, s, j.

Et faire l’étude statistiques, on va demander à notre bécane une question tout à fait légitime : qu’elle est la forme des composants de p pour avoir une meilleure probabilité tel que q soit le plus petit possible.

Si on arrive à avoir une réponse positive à cette question, ça sera une avancée dans l’étude des nombres premiers.

Remarque :
Après les multitudes de tests que j’ai fait avec différents k , j’en aperçois que mon intuition k avec la forme m(m+1)/2 donne plus de nombres premiers est fausse. Au contraire à fur et à mesure quand on prends des k arbitrairement (dans un désordre maxi) elle donneront des résultats plus importantes.
Mais ce n’est que l’étude statistiques qui va trancher sur ces questions là.


Salut Yoshy,

Donc j’imagine que vous avez compris l’enjeu des listes comme je vous ai expliqué auparavant, dans la constitution de la base de données pour l’étude statistiques et dans le reste du travail en général, c’est pourquoi le script comme je vous ai indiqué est primordial pour la continuité de ce projet


NB:
de taille conséquente* : Tout dépend de la capacité du traitement de nos machines, qui sont très limitées. Ce qui fait nos résultats sont aussi relatives.
Nous espérons donner de simple indices de la validité de nos propos, qui vont peut être amené un jour quelqu’un dépositaire d’un super- ordinateurs pour refaire ces calcules dans de bonnes conditions.

BAKKAOUI HASSANE
27-03-2019 12:56:09

Bonjour


Après avoir dresser les listes de nombres premiers de différents k, où chaque nombre premier donné en présence des variables n et q qui l’ont produits.

Nous commencions alors une nouvelle phase de ce travail celle de la représentation géométrique des nombres premiers. Et l’étude proprement dit de la répartition des nombres premiers.

Chaque k différent lui correspond un sous ensemble de P. Qu’on va noter [tex]P_k[/tex] , les nombres premiers d’un même sous ensemble ont la particularité de pouvoir être représentés dans un même polygone.

Si la répartition des nombres premiers est un mystère sans résolution depuis des millénaires, ce travail en même temps modeste et ambition à pour objectif de subdiviser le problème de l’étude de la répartition ne pas sur l’ensemble des nombres premiers P, qui est extrêmement difficile mais sur les sous-ensemble de P créer par les différents k.

« À condition que je arrive à transcrire mes pensées sur papiers »

La tâche n’est pas évidente, c’est pourquoi l’offre de participer à ce projet est toujours valable

BAKKAOUI HASSANE
24-03-2019 11:29:49

R,
[tex]21\times2^{36789}\times(1+2^{36789})\pm1 \pm42\times q[/tex]

Vous essayer ce numéro :


k = [tex]277798688081812760634344926[/tex]

[tex]277798688081812760634344926\times2^{36789}\times(1+2^{36789})[/tex]
[tex]\pm1 \pm2\times277798688081812760634344926\times  q[/tex]

On va ajouter une nouvelle condition à k de la forme m(m+1)/2 et divisible par 3 ce qui le cas ci-dessus
Et je pense pour des p très grand k doivent être aussi grand à vérifier bien sûr.

Regarde ce lien 2,3 million de chiffres avec PARI GP

PARI GP

yoshi
24-03-2019 10:13:50

Salut,


Un  nombre à 22151 chiffres ?
Je ne l'ai pas vu, il m'a échappé ? Où ça ?

@+

BAKKAOUI HASSANE
24-03-2019 09:43:04

Bonjour
Salut Yoshy
Nous essayerons d’abord avec PARI GP, je présume que dernière ça fonction isprime, il y a un algorithme probabiliste, tant pi ce n’est pas grave on ce contante de très probables, ce qui est sûr s’il répond 0 le nombre n’est pas premier.
Essayé avec le nombre que je vous ai proposé à 22151 chiffres on variant q, comme on fait avec python.

yoshi
24-03-2019 07:58:54

Re,

Génial ?
Allons, allons ! Évite les exagérations...

La seule chose qui est belle et difficile à coder c'est le test de Miller-Rabin...
Et il n'est pas de moi on le trouve ici sur internet : http://python.jpvweb.com/python/mesrece … st_premier
Je me suis contenté de le retoucher légèrement...

Après, l'utilisation du test avec les boucles imbriquées (tout ce qui suit : debut=time()), c'est quand même le b-a-ba de Python...

Je me contente de te fournir un code directement utilisable...

Je cherche des moyens pour accélérer de 100 fois la vitesse de traitement (en dehots de la transcription pure et simple en C ou C++,) : ils existent: encore faut-il que j'apprenne à m'en servir !

@+

BAKKAOUI HASSANE
23-03-2019 21:32:06

Bonsoir
Salut Yoshy
Vous êtes géniale mec, merci infiniment de tous ce vous avez fait pour moi

yoshi
23-03-2019 19:26:07

Re,

Voilà ce que tu demandes : testé et retesté...

from random import randint
from time import time
from math import sqrt

def Affiche_temps(tps):
    mn,sec=divmod(tps,60)
    h,mn=divmod(mn, 60)
    print ("Durée :", h,"h",mn,"min",sec,"s")

def _millerRabin(a, n):
    """Ne pas appeler directement (fonction utilitaire). Appeler millerRabin(n, k)"""
    # trouver s et d pour transformer n-1 en (2**s)*d
    d = n - 1
    s = 0
    while d % 2 == 0:
        d >>= 1
        s += 1
 
    # calculer l'exponentiation modulaire (a**d)%n
    apow = pow(a,d,n) # =(a**d)%n
 
    # si (a**d) % n ==1 => n est probablement 1er
    if apow == 1:
        return True
 
    for r in range(s):
        # si a**(d*(2**r)) % n == (n-1) => n est probablement 1er
        if pow(a,d,n) == n-1:
            return True
        d *= 2
 
    return False
 
# ========================
def millerRabin(n, k):
    """Test de primalité probabiliste de Miller-Rabin"""

    # éliminer le cas des restes %30 improductifs
    if  n%30  not in [1,7,11,13,17,19,23,29]:
        return False
 
    # recommencer le test k fois: seul les nb ayant réussi k fois seront True
    for repete in range(k):
        # trouver un nombre au hasard entre 1 et n-1 (bornes inclues)
        a = randint(1, n-1)
        # si le test echoue une seule fois => n est composé
        if not _millerRabin(a, n):
            return False
    # n a réussi les k tests => il est probablement 1er
    return True

       
debut=time()    
P1234=[0,0,0,0]
R=[]
S=[(1,2),(-1,2),(1,-2),(-1,-2)]
ok=0

##################
n = 2**3999                   #  (1)                          
k = 180300                     #  (2)
#################

commun = k*n*(n+1)
for q in range(451,501): # (3)
    if ok:
        break
    kq=k*q
    for i in range(4):
        if ok:
            break
        s1,s2=S[i]
        p=commun+s1+s2*kq
        if p>1 and not (p in R):
            if millerRabin(p,200):   #4
                print ("p = kn(n+1)"+"+"*(s1>0)+str(s1)+"+"*(s2>0)+str(s2)+"kq =")
                print(p)              
                print ("q = ",q)
                ok=1
                break
if not ok:
    print("Limite maxi de q atteinte : pas de résultat. Remplacer les limites mini et maxi")

Affiche_temps(int(time()-debut))

Où tu peux modifier :
(1)  La valeur de n... Attention la puissance en Python c'est **
(2)  La valeur de k
(3)  Les limites inférieure et supérieure. Ton disque SSD ne t'avancera à rien. Tour se passe en mémoire vive (RAM)...
      Selon la vitesse du processeur et la quantité de RAM (et sa vitesse) il est préférable d'avoir un écart pas trop grand...
      Les tests avec 50 d'écart me prennent 17 min lorsqu'ils sont négatifs... et j'ai 16 Go de RAM et un windows 64 bits.
      Si ta machine est vieille, elle est probablement en 32 bits : la mémoire max est alors de 4Go, dont seulement 3,2 Go sont utilisables
(4)  Plus le nombre qui suit p est élevé, plus le test va prendre du temps mais plus il sera fiable...

Pour qu'une boucle fonctionne, il faut un écart minimum de 1 entre les 2 bornes.
for i in range(3,5):
    print (i)
va afficher :
3
4
Le test d'arrêt est 5 : lorsque i prend la valeur 5 le script sort de la boucle...
q=136 est la seule valeur qui a généré un premier entre 0 et 560 inclus...
Sa "certification" a pris 8 min 11s.

@+

yoshi
23-03-2019 15:54:52

Re,

Il y a de fortes chances que celui-là (2413 chiffres) soit premier  :
7832511608960961256244208751170810889816935858462785068413835889134551599212294731564127088377697509285493985874497567479274188172198208736013356021285086993029806470085465455831935231027369108556145071280435468004205565264395509755488620595552302084934749936533040070892006349285982900671373536550860142549788878603254253918665102372955759539525198125960648149058279128634087028053368419684046589421265647821936563453372756157108056622776693182334026979021626091358897490650669698164977753180470167447975865556884113712931565002283036562388943579481808877356617489568691431806732532276148249963548171465499759077240637902727945009422807277029668025772431981484963361641111825784695050539176832589739704902937298518874540662677282944572928944588368014559778576610204872159898980285071771945321239812712511254768792379878195982227062274114285922332155364385725082149541451826422088502859283055434472589798486954694512877575186722779245373263176474694412248134682060574035507788146358181738064807743897398711321433905764274280507284377898743279663675552381873414015354314283024172228749460054098093465151991673847263488927138701078956937111283083402897241865752487830827363883317524165911505624919999411092917792452290608266778912146783707233551241566694764135753135581576893755024723060428579830641640379406614209690334316653561449523819485463201802940871810599863948222806752625873178554767159977865156200948382208671164036767296454573784571778856706362898320480509433750398236696640576134555813956887063779141689969036545347370658531573600511174173617466982649035595219733190165983360782518074931801654702115813909246892130269090385098854462036252370832978651454996399687234509610447454856549149398616522763752752167196980422082077387116638933907154571949512548097177243894779869902262506215193948046543856048041346831728052009392775945072627856614783464436565725623003975099831023492178910858046444339126354034697947337941190661685266837625260811312663052513877272685032378600344294655631939890730536358646870903644097246989878320271963773767008847712262972058752136111700497086842946040975673479175823962248786171537830396101397025743336052891219055654746605415215328825551737728040640741870600964864442643941405080644562608079630560426485574242209070232324768834862896394084537550024271890287533661396670251384711482249018181297354426563241274689249860785434331191272006269147238648860320662201547410168327999

Avec
n =2^3999
k =180300
q=136 (je suis parti de q=0)
p=kn(n+1)-1-2kq

@+

BAKKAOUI HASSANE
22-03-2019 23:19:05

Bonjour Yoshi

J’ai booster mon ordi avec  un disque dure ssd, j’ai ajouté de la ram, j’ai réinstaller python, j’ai refait le test k=21 avec votre script, j’ai vue les 15578 nombre premier créé par la formule, c’est fabuleux.
Comme je vous ai expliqué on a besoin des 4 variables [tex]n,k,\pm q, \pm1[/tex]pour chaque nombre premier produit, inscrit à côté.
Quand vous aurez le temps, vous avez votre travail aussi, il ne faut pas que j’abuse.
J’aimerais  que vous fassiez les changements sur votre script en figurant dans votre liste R, les 3 variables plus k..
C’est à moi maintenant de faire les autres tests avec des différents k.
Par contre j’aurais besoin aussi d’un script pour chercher un seul nombre premier et le programme s’arrête
On prenant exemple
n =2^3999
k =180300
q est la seule variable elle varie de 0 jusqu’à qu’ont trouve un nombre premier
En tenant compte des +/- de 1 et des +/- 2*kq
Un nombre de N=10000 chiffres si on de la chance on peut tomber sur un nombre premier à q=N/10 ce qui veut dire qu’on aura à faire 1000*4 de tests de primalité dont 80%  seront facilement à vérifier les nombres qui prendront du temps ceux qui sont multiples de deux ou trois grand nombre premier.
Très probable suffirait pour un début

yoshi
22-03-2019 20:06:55

RE,

le MP n'existe pas avec Flushbb, moteur de ce forumi.
Ecris à yoshik _at_ no-log.org
(Remplacer _at_ par @)

@+

Pied de page des forums