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)?
cinquante six moins trente quatre
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)

LEG
26-11-2020 18:09:49

Bonsoir à tous
@Yoshi je pense que pour l'optimiser il faut déjà éliminer les multiples de 2,3,et 5  travailler avec les entiers des 8 famille 30k + i , avec appartenant à (1,7,11,13,17,19,23,29) ce qui supprime 73,666....% des entiers naturels

Ce qui donne:
[   1 , 7 , 11 , 13 , 17 , 19 , 23 , 29 ]
[ 31 ,37, 41 , 43 , 47 , 49 , 53 , 59 ]
etc...
@Omhaf.
peux tu donc essayer avec ta programmation... voire le temps que cela donne ; Sinon en python par Yoshi...

car regarde ce que donne mon algorithme écrit par Yoshi en Python :
pout N 1000 020; avec la Fam 3k + 7

===== RESTART: E:\Documents\Conjecture de Goldbach\Crible_ Era_gty_mod30.py ====
Donnez N: 1000020
Nombre premiers criblés famille 7 : 9812 ----- 0.0
--- Temps total: 0.01 sec ---

Donc tu vois pour les 8 familles cela donne 0,01 seconde * 8 = 0,08 secondes ....

Donnez N: 1000020
Nombre premiers criblés famille 1 : 9807 ----- 0.0
--- Temps total: 0.01 sec ---
>>>
Donnez N: 1000020
Nombre premiers criblés famille 11 : 9810 ----- 0.0
--- Temps total: 0.01 sec ---
Donnez N: 1000020
Nombre premiers criblés famille 13 : 9826 ----- 0.01
--- Temps total: 0.01 sec ---

passons à n = 100 000 020

===== RESTART: E:\Documents\Conjecture de Goldbach\Crible_ Era_gty_mod30.py ====
Donnez N: 100000020
Nombre premiers criblés famille 7 : 720270 ----- 0.4
--- Temps total: 0.4 sec ---

soit pour les 8 familles : 3,2 secondes... en Python .
De plus tu va très vite saturer ta mémoire si tu dois écrire tous les nombres pour les tester au lieu de sauter par pas de P ("un nombres premiers, inferieur à racine de N") à partir de l'index du produit  etc...

C'est peut être originale comme le dit Yoshi....(d'utiliser modulo 12)  mais cela n'apportera rien de nouveau dans le criblage des nombres premiers.

yoshi
26-11-2020 14:44:12

Bonjour,

Tu peux tout aussi bien te lancer dans Python aussi.
Le langage est libre et gratuit, il dispose d'une quantité assez phénoménale de librairies (programmes additionnels si u préfères) tierces qui en les installant avec le Python de base (à la base déjà bien large d'ailleurs), tu disposes de tas de fonctions supplémentaires...
J'ai une machine 64 bits et 16 Go de RAM, ce qui n'empêcherait pas mon script dxe fonctionner tel quel sur une machine 32 bits avec 8 Go de RAM...
L'avantage de Python est qu'il est clair à la lecture...
L'inconvénient, c'est que, langage interprété, il est sensiblement plus lent que C ou C++ par exemple...

@+

Omhaf
26-11-2020 12:46:16

Re
Merci yoshi oui il fallait prendre en considération les avantages que Python offre car Windev n'est qu'un AGL (générateur d'applications  de gestion  et administratives)
en plus avec une machine 64 bits et une configuration optimale de la RAM les résultats seront meilleures
Pour la divisibilité par 12, oui il faut déclarer un seuil à partir duquel l'assertion est vraie  (à partir de 5 et 7   49-25= 24 = 2*12)
Enfin permets moi de te remercier pour tes sympathiques interventions

yoshi
26-11-2020 12:44:48

Re,

La différence entre 2 carrés de nombres premiers différents > 3 est donc toujours un multiple de 12

Si tu entends que les deux premiers sont tous deux >3, alors mes contre-exemples ne marchent plus...
Différents est inutile : 0 est un multiple de 12 (et de n'importe quoi d'autre). Stricto sensu, même en ne le précisant pas, la propriété est vraie pour une différence nulle.
Préciser "différents" laisse entendre que sinon, ce ne serait pas vrai...

Dont acte, j'ai écrit trop vite : je ne suis pas infaillible, moi. Surtout quand je fais plusieurs choses à la fois.
Et puis, avec l'âge, on devient sénile, c'est bien connu...

@+

yoshi
26-11-2020 12:04:17

Re,

la différence entre les carrés de 2 nombres premiers divisée par 12 donne toujours un entier

Non, pas toujours...
Contre exemples :
$5^2-3^2=25-9=16$ et $16/12$ n'est pas entier...
$7^2-3^2=49-9=40$ et $40/12$ n'est pas entier...
Désolé, ami Omhaf... Console-toi, 48PierrelePetit a aussi énoncé une proposition fausse...

J'ai retravaillé ton Algorithme, je l'ai élagué de choses encombrantes (et qui ne servaient qu'à le ralentir), voilà ce que j'en ai fait en utilisant la "fonction" préexistante en Python : is_integer().
Pourquoi ?
Parce que si je demande à Python quel est le type de sqrt(4)  il me répond float donc pas entier, parce que le résultat est 2.0
Cette "fonction" contourne ce problème et donne la bonne réponse.
Et donc, je n'ai plus besoin de tester la partie décimale pour savoir si le résultat est entier ou non.
J'ai inclus un chronomètre qui m'a permis de voir que j'ai divisé le temps de calcul par 3,4.

from math import sqrt
from time import time

Primes=[2]
debut=time()
for MonNombre in range(1,1000001,2):
    Result=1
    if not sqrt(MonNombre).is_integer():      
        Xetendue=int(sqrt(MonNombre))+1
        for compteur in range(3,Xetendue,2):
            if MonNombre%compteur==0:  
                Result=0
        if Result:
            Primes.append(MonNombre)

print(time()-debut, "s")
print(Primes)
print(len(Primes))

Recherche des premiers entre 1 et 1000000 : 32 s pour 78498 nombres trouvés...

14,5 s pour les 50000 premiers trouvés...

@+

Omhaf
26-11-2020 11:57:37

Merci  pour ton indulgence 48PierrelePetit

Omhaf
26-11-2020 11:45:07

Re bonjour
Testé avec chrono
50000 nombres premiers   (dernier =611953) en 1mn 33 s 92/10

Omhaf
26-11-2020 11:13:19

Bonjour yoshi
Pour répondre à ta question yoshi lis bien ce qui suit stp
Je déclare  que la différence entre les carrés de 2 nombres premiers divisée par 12 donne   toujours un entier
si cette déclaration s'avère vraie et est inédite je  te prie de la publier en mon nom et merci

Omhaf
26-11-2020 10:56:59

Re Bonjour
Voici un exemple expliquant l'utilité de la division par 12
admettons que le compteur a passé 19 et retenu son carre cad AncienCarre=361
la boucle sautera à 21
Carre =21² = 441
Différence=441-361=80
80/12  n'est pas entier on saute au suivant en l'occurrence 23
23²=529
Différence = 529-361 =168
Oui 168/12 = un entier cad  14
on retient 23 pour les verifs  ultérieures

Omhaf
26-11-2020 10:44:57

Bonjour
élimine la partie inutile pour voir si ça marche c'est simple non ?
La division par 12 filtre beaucoup de nombres et soulage la vérification ultérieure
Comparez les temps d'exécution des algorithmes classiques et de celui-ci
J'ai encore simplifié l'algorithme pour gagner plus de temps. je posterai plus tard.
Merci

yoshi
26-11-2020 09:01:49

Bonjour Omhaf,

Et si tu nous disais pourquoi 12 ? pourquoi pas 6 ? 14 ? 18 ?
Tu n'as pas choisi 12 par hasard, alors ?

@+

Omhaf
25-11-2020 22:38:28

Bonne nuit  48PierrelePetit
Moi même je ne peux expliquer le raisonnement mais la réalité est la .... et ça marche !
Essayons donc tous de comprendre comment et pourquoi ça marche.
J'ai remodelé l'algorithme et gagné encore du temps d'exécution

@ plus et merci de vos participations

Omhaf
25-11-2020 21:59:14

Re
Le compteur traitera 13 avec son carré 169  car racine(13) n'est pas entier  et l'acceptera mais ce que tu n'as pas compris c'est lorsque le compteur arrivera a 169 Il ne calculera pas 169² car la racine de 169 est 13 qui est Entier

Omhaf
25-11-2020 21:38:28

Bonjour 48PierrelePetit

écarter 81 ou 169  par exemple dans la boucle principale qui sont des carrés de 9 et 13  te pose un problème dans la tête ?
je crois que tu t'es précipité dans tes propos ou bien tu as raison je dois m'arrêter et je dois te remercier du conseil
Pourquoi faut il toujours que je reçoive des coups dans ce forum ? ne sommes nous pas entre intellectuels qui pourraient excuser et corriger poliment  les erreurs des autres  ?

Omhaf
25-11-2020 19:56:42

Bonsoir 48PierrelePetit
Disons que c'est une conjecture pour l'instant et appelons la Conjecture Omar
ça te va ? hhhhhh
Non, sérieusement l'apport neuf à mon avis est  comme suit
1 er  Ecarter les nombres dont la racine est un entier
2 eme  soit N le nombre en cours et N' le nombre premier qui précède
            si (N-N")/12  est un entier on continue

Pied de page des forums