 |
Apprendre Maple Site dédié au logiciel de calcul formel Maple
|
Voir le sujet précédent :: Voir le sujet suivant |
Auteur |
Message |
Guimzo
Inscrit le: 02 Juin 2012 Messages: 210
|
Posté le: 27 Sep 2014 22:06 Sujet du message: Nombres semi-premiers |
|
|
Bonjour ALS
Ça fait longtemps,
J'espère que vous allez bien
Pourriez-vous m'aider s'il vous plaît pour un projet.?
Le projet consiste à faire un petit programme qui a pour but de trouver les 2 nombres premiers qui sont les 2 diviseurs d'un nombre semi-premier donné.
Par exemple si on prend le nombre semi-premier 15 ; alors les 2 nombres cherchés sont 3 et 5.
Si on prend le nombre semi-premier 35723 ; alors les 2 nombres cherchés sont 139 et 257.
Alors j'ai pensé à un programme simple qui consisterait à prendre le nombre semi-premier de départ et de le diviser par les nombres premiers qui se trouvent entre 1 et la racine carrée du nombre semi-premier.
Mais pour aller plus vite, on peut remarquer que si le nombre semi-premier se termine par un 3 par exemple, alors cela implique que parmi les 2 nombres premiers cherchés, l'un des 2 quant à lui se termine forcément par un 9 ou 7 ou un 1 ou un 3 ; soit donc prendre en compte le couple (9;1) ou le couple (9;3) ou le couple (7;1) ou le couple (7;3).
C'est à dire que dans notre programme, on ne prendra en compte si par exemple le nombre semi-premier se termine par 3, que les nombres premiers, entre 1 et la racine du nombre semi-premier, qui se terminent par 9 ou 1.
Voici ce que vous m'aviez déjà aidé à faire :
==================================
a:=35723;
b:=189;
c:=100;
do p:=nextprime(rand(c..b)()) ;Taille:=length(p);q:=a/p; m :=whattype(q) ; if ( m=integer ) then print(" ! LES NOMBRES ONT ETE TROUVE...! ") and print("TERMINE") else 0 fi end;
==========================================
Dans cet exemple, on a pris un nombre "b" qui est la partie entière de la racine carrée du nombre semi-premier et un nombre "c "qui est le plus petit nombre qui a autant de nombre de chiffres ( nombre de digits ) que la partie entière de la racine carrée du nombre semi-premier.
Le programme est fonctionnel, mais comment faire pour que lors de la génération des nombres premiers, il ne génère que des nombres premiers dans les bornes choisies, qui se terminent ou par 9 ou par 1 par exemple...? |
|
Revenir en haut de page |
|
 |
ALS
Inscrit le: 11 Sep 2006 Messages: 647
|
Posté le: 28 Sep 2014 8:42 Sujet du message: Re: |
|
|
Bonjour,
Je vous propose la procédure de factorisation suivante:
Code: |
> factoriser:=proc(x::posint)
> local s,M,d;
> s:=select(t->isprime(t),[seq(n,n=2..trunc(sqrt(x)))]):
> for M in s do
> d:= x/M:
> if type(d,integer) and isprime(d) then return(M,d) fi
> od:
> end proc:
>
> factoriser(35723);
139, 257
> factoriser(587384507);
12799, 45893
|
Dans la liste s, je réduis aux nombres uniquement premiers entre 2 et la partie entière de la racine carrée de x.
Je ne pense pas que l'idée des couples (9;1), (9;3), (7;1) ou (7;3) soit pertinente, tout ces tests supplémentaires ralentiront la vitesse du programme.
A plus sur ce forum. |
|
Revenir en haut de page |
|
 |
Guimzo
Inscrit le: 02 Juin 2012 Messages: 210
|
Posté le: 28 Sep 2014 12:05 Sujet du message: |
|
|
Bonjour ALS
Merci beaucoup pour votre aide.
Effectivement, après coup, les nombres premiers (# de 2 et 5) se terminent que par 1 ou 3 ou 7 ou 9.
Donc la notion de couple pas pertinent comme vous le remarquez.
Le programme est testé et ok. |
|
Revenir en haut de page |
|
 |
|
|
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
|

Développé par phpBB © 2001, 2006 phpBB Group
Traduction par : phpBB-fr.com
Apprendre Maple - © 07/04/2025
- Alain Le Stang - Navigation optimisée pour une résolution 1024 x 768.
|