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 

Fonction Prevprime

 
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: 28 Juin 2012 19:10    Sujet du message: Fonction Prevprime Répondre en citant

Bonjour ALS,




Encore besoin de votre aide pour construire une séquence qui à partir d'un nombre donné " a " calcule d'une part la racine carré de a ; ensuite effectue des divisions successives de a par le nombre premier a1 venant juste avant la racine de a et ainsi de suite le nombre premier a2 venant avant ce nombre a1 ensuite a3 avant a2 etc jusqu'à tomber sur un quotient entier et donc stopper les divisions.


Voilà ce qui a déjà été fait :


a:= 1000000;
r:=sqrt(a):print(racine_de_a =r );
do a1 := prevprime(r) ; d:=a/a1; q :=whattype(d) ; if ( q=integer ) then print(" DIVISION TERMINE..! ")else 0 fi end ;



Au lieu de continuer à calculer le prevprime de 997 et ainsi de suite prevprime de prevprime(997) etc ça reste que sur 997. ....?
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:32    Sujet du message: Répondre en citant

Bonjour,
Il fallait réaffecter a par a1 ( a:=a1 ) pour que la boucle se poursuive correctement et prendre a1:=prevprime(floor(r)), car prevprime n'agit que sur des entiers. Du coup, vous pouvez partir d'un a qui n'est pas forcément un carré parfait.

Code:

> a:= 1000000;
> do
> r:=sqrt(a):print(racine_de_a =r );
> a1 := prevprime(floor(r)) ; d:=a/a1; if type(d,integer) then print(" DIVISION TERMINEE..! "): break else a:=a1 fi end do;

                             a := 1000000


                              r := 1000


                          racine_de_a = 1000


                              a1 := 997


                                  1000000
                             d := -------
                                    997


                                     1/2
                             r := 997


                                          1/2
                         racine_de_a = 997


                               a1 := 29


                                    997
                               d := ---
                                    29


                                     1/2
                              r := 29


                                         1/2
                         racine_de_a = 29


                               a1 := 3


                              d := 29/3


                                    1/2
                              r := 3


                                         1/2
                          racine_de_a = 3

Error, (in prevprime) there are no primes less than 2


Ca se terminera souvent par ce message d'erreur, car à un certain moment, on atteindra la valeur 2 qui n'a pas d'entier premier devant lui.

Le break fera sortir de la boucle dès que je trouve un diviseur d.
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 14:05    Sujet du message: Fonction Prevprime Répondre en citant

Bonjour ALS,




La séquence calcule les racines carrés successives mais je voudrais qu'elle calcule les nombres premiers du plus grand au plus petit qui sont justes avant la racine carré du nombre donné a.


Exemple on avait pris a = 1 000 000

Donc sqrt(a) = 1000
( on arrondirait à l'entier le plus proche
dans le cas où ce serait un décimal )


donc prevprime(1000) = 997

prevprime(997) = 991

prevprime(991) = 983

etc et à chaque fois effectuant les divisions du nombre de départ a par ces prevprimes trouvés

Donc 1 000 000 / 997 = .....

1 000 000 / 991 = ......

1 000 000 / 983 = ......

Et quand le résultat de la division est un integer arrêter la séquence.
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:29    Sujet du message: Répondre en citant

Bonjour,
Je n'avais pas compris comme ça. Donc faites:

Code:

> a:= 1000000;
> r:=sqrt(a):print(racine_de_a =r );
> while r>2 do   
> a1 := prevprime(r) ; d:=a/a1; if type(d,integer) then print(" DIVISION TERMINEE..! "): break else r:=a1 fi end do;


Ca devrait convenir maintenant.
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:26    Sujet du message: Fonction Prevprime Répondre en citant

Bonjour ALS



Merci beaucoup la séquence tourne comme sur des roulettes..!! : )
J'ai rajouté la fonction "round" au cas des sqrt qui donneraient un décimal.



Digits:=15;
a:= 21746597;
r:=round(sqrt(a)):print(racine_de_a =r );
while r>2 do
a1 := prevprime(r) ; d:=a/a1:div:=d,[d,evalf(d)] ;if type(d,integer) then print(" DIVISION TERMINEE..! "): break else r:=a1 fi end do;
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.