Apprendre Maple Index du Forum Apprendre Maple
Site dédié au logiciel de calcul formel Maple
 
  Page d'accueilPage d'accueil   FAQFAQ    RechercherRechercher    Liste des MembresListe des Membres    Groupes d'utilisateursGroupes d'utilisateurs 
S'enregistrerS'enregistrer    ProfilProfil   Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 

Nombre de Mersenne

 
Poster un nouveau sujet   Répondre au sujet    Apprendre Maple Index du Forum -> Séquences, listes, ensembles, tables ou tableaux...
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
Guimzo



Inscrit le: 02 Juin 2012
Messages: 209

MessagePosté le: 25 Juin 2012 4:12    Sujet du message: Nombre de Mersenne Répondre en citant

Bonjour ALS,




Encore moi pour un nouveau post
Nouveau projet : )


Soit x un nombre semi-premier donné

Soit a et b un intervalle de nombres premiers donnés [a,b]

Alors en fait je voudrais fabriquer une séquence qui calcule tous les nombres de Mersenne [ ( 2^p ) - 1 ] à partir des nombres premiers de l'intervalle [a, b] donné.

Ensuite que la séquence divise le nombre semi-premier x donné par chacun des nombres de Mersenne générés et stopper la division quand le résultat est un entier...

Voilà ce que j'ai commencé à faire :
( Exemple de semi-premier 655957 = 769*863)


x:= 655957;
M :=( 2^n) -1;
seq(M,n=[1..997]);
d:= x/M ; e:= whattype(d) ; if ( d=integer ) then print(" Fin des divisions ")and print( TERMINE ) else 0 fi end;
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
ALS



Inscrit le: 11 Sep 2006
Messages: 647

MessagePosté le: 25 Juin 2012 17:38    Sujet du message: Répondre en citant

Bonjour,
Si j'ai bien compris ce que vous voulez faire, ça se traduirait par ce code:

Code:

> x:= 655957:
> s:=seq(2^n-1,n=1..997):
> for M in s do
>   d:= x/M:
>   if type(d,integer ) then print(M," Fin des divisions. TERMINE" ) else 0 fi
> od:

                               1, " Fin des divisions. TERMINE"


Le problème est que la première valeur de M est 2^1-1=1, donc on va s'arreter tout de suite.

A plus.
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
Guimzo



Inscrit le: 02 Juin 2012
Messages: 209

MessagePosté le: 27 Juin 2012 3:46    Sujet du message: Nombre de Mersenne Répondre en citant

Bonjour ALS,



Votre passion pour les Mathématiques la gentillesse et la patience de vos réponses , encore mille fois merci..!

Alors effectivement pour n=1 on a m/n = m.

Donc j'ai un peu changé la séquence qui consisterait à donner d'une part les nombres de Mersenne générés.

Ensuite de donner les résultats des divisions sous leur forme fractionnaire accolées d'une évaluation décimale et indiquer la nature du résultat "fraction ou integer".

Mais j'en suis qu' à ce point je ne vois pas comment mettre les 2 résultats fraction + décimale et le integer ou fraction avec whattype...



x:= 655957: print( Semi-Premier = x);
> m:= [seq( 2^n -1, n=1..10 )]: print ( Nombre-Mersenne =m );
> d:= [seq( x/m ,m= [seq( 2^n -1, n=1..10 )])]: print ( Divisions =d );
>
>
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
ALS



Inscrit le: 11 Sep 2006
Messages: 647

MessagePosté le: 27 Juin 2012 6:24    Sujet du message: Répondre en citant

Merci,
Voici ce que je vous propose:

Code:

> x:= 655957: print( Semi-Premier = x);
> s:= [seq( 2^n -1, n=1..10 )]: print ( Nombre-Mersenne =m );
> d:= [seq( [x/m=evalf(x/m),`if`(type(x/m,integer),`integer`,`fraction`)] ,m= s)]: print ( Divisions =d );

                       Semi - Premier = 655957


    Nombre - Mersenne = [1, 3, 7, 15, 31, 63, 127, 255, 511, 1023]


  Divisions = [[655957 = 655957., integer],

        [655957/3 = 218652.3333, fraction],

        [655957/7 = 93708.14286, fraction],

         655957
        [------ = 43730.46667, fraction],
           15

         655957
        [------ = 21159.90323, fraction],
           31

         655957
        [------ = 10412.01587, fraction],
           63

         655957
        [------ = 5165.015748, fraction],
          127

         655957
        [------ = 2572.380392, fraction],
          255

         655957
        [------ = 1283.673190, fraction],
          511

         655957
        [------ = 641.2091887, fraction]]
          1023



A bientôt.
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
Guimzo



Inscrit le: 02 Juin 2012
Messages: 209

MessagePosté le: 27 Juin 2012 13:07    Sujet du message: Nombre de Mersenne Répondre en citant

Bonjour ALS,




A la 2 éme ligne comme j'avais changé le nom des variables j'ai mis "s" à la place du "m" dans la chaîne " Nombre-Mersenne =m ".

La séquence fonctionne à merveille c'est exactement ce qu'il me fallait...!!
Le nombre de Merci que les internautes ont déjà dû vous dire doit sans doute tendre vers +l'infini, j'en rajoute un Merci de + à cette suite infinitésimale : )

Merci ALS...!
Soyez mille fois Béni !
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
Guimzo



Inscrit le: 02 Juin 2012
Messages: 209

MessagePosté le: 28 Juin 2012 18:50    Sujet du message: Nombre de Mersenne Répondre en citant

Bonjour ALS,



Pour aller plus loin peut-on aussi fabriquer une séquence qui à partir d'un nombre premier donné p nous dirait si oui ou non ce nombre premier est de Mersenne....?

Et si oui donner la valeur de n tel que

p = 2^n - 1.................??
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
ALS



Inscrit le: 11 Sep 2006
Messages: 647

MessagePosté le: 29 Juin 2012 6:15    Sujet du message: Répondre en citant

Bonjour,
Vous pouvez utiliser la fonction mersenne qui existe dans le package de théorie des nombres numtheory:

Citation:

The function mersenne computes Mersenne primes. If the argument n is an integer then mersenne(n) will return
n
2 - 1
if
n
2 - 1
is known to be prime. Otherwise, if n is prime, but
n
2 - 1
is not determinably prime, then mersenne(n) will return FAIL. Finally, if n is composite it will return false.
If the argument is a list with one integer element [i], then mersenne([i]) will return the ith Mersenne prime. If the value is beyond Maple's precomputed list of Mersenne primes, an error will be issued.


Code:

> with(numtheory):
> mersenne(3);
                               7
> mersenne([3]);
                               31
> mersenne(4);
                             false
> mersenne(224737);
                             false


A +.
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
Guimzo



Inscrit le: 02 Juin 2012
Messages: 209

MessagePosté le: 29 Juin 2012 13:42    Sujet du message: Nombre de Mersenne Répondre en citant

Bonjour ALS,




Merci,
A bientôt.
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
Guimzo



Inscrit le: 02 Juin 2012
Messages: 209

MessagePosté le: 29 Juin 2012 18:10    Sujet du message: Nombre de Mersenne Répondre en citant

Bonjour ALS,




Alors la fonction mersenne(n) calcule effectivement la valeur de ( 2^n) - 1


Mais dans le cas inverse qui m' intéressait c'est de partir d'un nombre donné que l'on sait être premier et que maple dise si oui ou non le nombre donné est un nombre qui peut s'écrire de la forme ( 2^n) - 1.............?


Par exemple prenons le nombre premier 127.

On sait que 127 est un nombre premier
Mais peut-il s'écrire de la forme ( 2^n) - 1.......?

Dans ce cas oui 127 peut s'écrire (2^7) - 1
Or 7 est lui-même premier donc 127 est un nombre de Mersenne


Donc l'idée c'est de partir d'un nombre premier donné et voir si oui ou non ce nombre peut-être écrit sous la forme ( 2^n) - 1.........?
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
ALS



Inscrit le: 11 Sep 2006
Messages: 647

MessagePosté le: 30 Juin 2012 8:33    Sujet du message: Répondre en citant

Bonjour,
je vous propose mieux, le test de Lucas Lehmer pour tester si p est un nombre de Mersenne.

Citation:

Lucas Lehmer test for Mersenne primes

Let p be a prime > 2. Define n=2^p-1 . Also let s[1]=4, s[k+1] =s[k]^2-2 (mod n), for k>=1. Then n is prime if and only if s[p-1]=0 (mod n) .


Ce qui donne l'algorithme suivant:

Code:

> Lucas_Lehmer := proc (p)
> local s, n, i;
> if p = 2 then true
> elif isprime(p) then
>   s := 4; n := 2^p-1;
>   for i to p-2 do
>     s := `mod`(s^2-2,n)
>   od;
>   if s = 0 then true else false fi;
> else
>   false
> fi
> end:
>
> for p to 100 do if Lucas_Lehmer(p) then print(p,2^p-1) fi od;

                                 2, 3


                                 3, 7


                                5, 31


                                7, 127


                               13, 8191


                              17, 131071


                              19, 524287


                            31, 2147483647


                       61, 2305843009213693951


                   89, 618970019642690137449562111
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
Guimzo



Inscrit le: 02 Juin 2012
Messages: 209

MessagePosté le: 30 Juin 2012 15:48    Sujet du message: Nombre de Mersenne Répondre en citant

Bonjour ALS,




Un merci de + dans ce grand océan de Merci : )
Revenir en haut de page
Voir le profil de l'utilisateur Envoyer un message privé
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    Apprendre Maple Index du Forum -> Séquences, listes, ensembles, tables ou tableaux... Toutes les heures sont au format GMT + 2 Heures
Page 1 sur 1

 
Sauter vers:  
Vous ne pouvez pas poster de nouveaux sujets dans ce forum
Vous ne pouvez pas répondre aux sujets dans ce forum
Vous ne pouvez pas éditer vos messages dans ce forum
Vous ne pouvez pas supprimer vos messages dans ce forum
Vous ne pouvez pas voter dans les sondages de ce forum


phpBB

Développé par phpBB © 2001, 2006 phpBB Group
Traduction par : phpBB-fr.com


Apprendre Maple - ©  - Alain Le Stang - Navigation optimisée pour une résolution 1024 x 768.