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 

Nombres semi-premiers

 
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: 27 Sep 2014 22:06    Sujet du message: Nombres semi-premiers Répondre en citant

Bonjour ALS Smile
Ça fait longtemps, Smile
J'espère que vous allez bien Smile
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
Voir le profil de l'utilisateur Envoyer un message privé
ALS



Inscrit le: 11 Sep 2006
Messages: 647

MessagePosté le: 28 Sep 2014 8:42    Sujet du message: Re: Répondre en citant

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
Voir le profil de l'utilisateur Envoyer un message privé
Guimzo



Inscrit le: 02 Juin 2012
Messages: 209

MessagePosté le: 28 Sep 2014 12:05    Sujet du message: Répondre en citant

Bonjour ALS Smile
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
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.