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 

Rechercher deux nombres premiers somme d'un nombre pair

 
Poster un nouveau sujet   Répondre au sujet    Apprendre Maple Index du Forum -> Programmation
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
Guimzo



Inscrit le: 02 Juin 2012
Messages: 209

MessagePosté le: 06 Mar 2015 20:05    Sujet du message: Rechercher deux nombres premiers somme d'un nombre pair Répondre en citant

Bonjour ALS,

Pourriez-vous m'aider s'il vous plaît pour cette nouvelle programmation ; l'idée est de fabriquer un programme qui recherche 2 nombres premiers dont la somme de ces 2 nombres premiers donnerait un nombre pair prédéterminé.

Voici ce que j'ai fait :

1. On pose "p" comme étant le nombre pair prédéterminé
2. On divise "p" par sqrt(2), on ajoute 1 et on garde la partie entière qu'on nomme "e"
3.On introduit une boucle "do...while" qui calcule à chaque fois un nombre premier juste avant "e" qu'on nomme "m" et qui calcule si oui ou non l'opération (p-m = nombre premier) ; si (p-m) est premier c'est fini, et si (p-m) n'est pas premier, on recommence l'opération qui consiste à prendre le nombre premier juste avant "m" et ainsi de suite...

Maple :
=====================

restart;
Digits:=150;
p:=(1522605027922533360535618378132637429718068114961380688657908494580122963258952897654000350692006138);
P1:=length(p);
e:=floor(p/sqrt(2)+1);
m:=prevprime(e);
o:=p-m;
if isprime(o) then print(o) fi ;

==================
Alors ça fonctionne quand (p-m) = un nombre premier du premier coup, mais comment répéter l'opération jusqu'à trouver les deux premiers, quand l'opération (p-m) n'est pas un nombre premier...

P.S.: Avez-vous remarqué que le "p" choisi est le nombre RSA100 qu'on enlève 1 et qu'on peut donc écrire comme étant la somme de deux nombres premiers :

1522605027922533360535618378132637429718068114961380688657908494580122963258952897654000350692006138 =

1076644340312755880532680650576372710933150485625861359957904474683320818555587068016342553179333081 + 445960687609777480002937727556264718784917629335519328700004019896802144703365829637657797512673057
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: 07 Mar 2015 8:06    Sujet du message: Répondre en citant

Bonjour, il suffisait d'englober les instructions dans une boucle do ... end do et mettre la valeur de o dans p pour pouvoir recommencer.
On sort de cette boucle par un break quand o est premier, auquel cas on affiche e et o.


Code:

> restart;
> p:=(1522605027922533360535618378132637429718068114961380688657908494580122963258952897654000350692006138);
> do
> e:=floor(p/sqrt(2)+1);
> m:=prevprime(e);
> o:=p-m;
> if isprime(o) then print(e):print(o):break fi:
> p:=o;
> end do:
>

  p := 15226050279225333605356183781326374297180681149613806886579\
        08494580122963258952897654000350692006138


  1076644340312755880532680650576372710933150485625861359957904474\
        683320818555587068016342553179333640


  4459606876097774800029377275562647187849176293355193287000040198\
        96802144703365829637657797512673057




Voila, voilou...
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: 08 Mar 2015 3:51    Sujet du message: Répondre en citant

Bonjour ALS,

Merci infiniment : )
J'ai une question s'il vous plait tout autre :
Pourrait-on avec Maple construire un repère orthonormé gradué jusqu'à par exemple un nombre de 150 chiffres...?
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: 08 Mar 2015 7:14    Sujet du message: Répondre en citant

Bonjour,
Je pense que oui. Regardez la page d'aide "Plot Tickmarks and Gridlines".
On peut jouer sur xtickmarks.
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: 09 Mar 2015 0:10    Sujet du message: Répondre en citant

Bonsoir ALS,

Je vous mets un lien vers un graphique sur les nombres premiers :
Dans un repère orthonormé, je note chaque entier de 1 à l'infini sur l'axe des "x" et sur l'axe des "y" on met les nombres premiers successifs.
Par exemple on a x=1 correspond à y=2 ; x=2 correspond à y=3 ; x=3 correspond à y=5 ; x=4 correspond à y=7 ainsi de suite...
Je trace les perpendiculaires à l'axe des "x" et l'axe des "y" pour les nombres de 1 à l'infini sur l'axe des "x" et pour les nombres premiers...

Ensuite je prends par exemple un nombre semi-premier donné et je trace la courbe représentative f(x)= nombre semi-premier / x

Par exemple f(x) = 77/x

Je remarque alors que la courbe f(x)=77/x, coupe l'intersection de deux droites sur le graphiques qui correspond au point dont l'abcisse est 7 ou 11 et respectivement les ordonnées 7 et 11, c'est à dire les deux facteurs premiers de 77.

Ma question est de savoir si on peut transcrire cette résolution graphique par une formule qui ferait l'économie de tracer tous les "x" et tous les "y" pour chaque nombres premiers....?

Ma seconde question, est de savoir, si on peut faire un programme qui ferait un graphique où on tracerait ces "x" et ces "y" et ensuite tracer les fonctions f(x) qu'on veut, afin de déterminer graphiquement les deux facteurs premiers du nombre semi-premier...?

Voici le lien vers le graphique, sans doute plus explicite :

" https://fbcdn-sphotos-e-a.akamaihd.net/hphotos-ak-xpf1/v/t1.0-9/10407097_1569461426667526_7669580099287787802_n.jpg?oh=feaa0ff52734535c787716b54601d50e&oe=5592BE40&__gda__=1434152063_b48e894459f5d9867c5625cd72ff5baa " [/url]
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: 09 Mar 2015 9:51    Sujet du message: Répondre en citant

Bonjour,
on peut même se passer du graphique grâce à la petite procédure suivante:

Code:


> semi_prem:=proc(a::posint)
> local x,y,s:
> s:=seq(ithprime(i),i=1..floor(sqrt(a))):
> for y in s do
>   for x to y do
>     if y=a/x then return(x,y): end if
>   end do
> end do:
> end proc:
>
> semi_prem(77);

                                7, 11

> semi_prem(1013473);

                              983, 1031



Bien à vous.
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: 09 Mar 2015 14:34    Sujet du message: Répondre en citant

Bonjour ALS,

Merci encore et encore : )
Efficace mais dommage, ça bute encore pour les nombres à plus de 30 digits...
J'perds pas espoir : )
À bientôt et bon après-midi : )
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 -> Programmation 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.