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 

p = x² - y²

 
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: 24 Mai 2015 12:40    Sujet du message: différence de carrés p = x² - y² Répondre en citant

Bonjour ALS,

Me revoilà pour une nouvelle méthode: )
J'espère que ça va et que je ne vous ai pas trop manqué : )

Alors je viens solliciter votre aide s'il vous plaît pour un nouveau algorithme, qui a pour but de factoriser un nombre donné sous forme de différence de deux carrés par une méthode "intuitive".


Le programme consisterait à faire comme ça :

Soit p =77.
1. On calcule floor(sqrt((p)) ici floor(sqrt(77)) = 8

2.On calcule q:= (floor(sqrt((p)))² - (floor(sqrt((p))-1)²
Ici q= 8²-7² = 15

3. On calcule a:= p- floor(sqrt((p))²
Ici a= 77-8² = 77 - 64 = 13

4. C'est là que le programme à proprement parler commence véritablement :
On fait les soustractions successives de a-(q+2)-(q+4)-(q+6)...
Jusqu'à tomber sur la partie absolue d'un carré :

Exemple :

Pour 77 :
13-17 = -4 et abs( -4) est 2² Donc fin le résultat cherché est 4.
On vérifie et on a bien 77+4 = 81 qui est un carré et 4 aussi.

Sinon dans l'autre sens ça donnerait tout simplement ça :

77+( 1+3+5+7+9.....)= ..??

On s'arrête quand on tombe sur un carré.
J'ai préféré commencé à partir de p - floor(sqrt(p))² pour aller plus vite qu'en commençant par p lui même car dans certains cas c'est nettement plus long que le cas de 77 où on tombe directement en 2 itérations sur 77+(1+3) =81

Alors que par exemple pour 88447 on a :

88447+1+3+5+7+9+11+13+15+17+19+21+23+25+27+29+31+33+35+37+39+41+43+45+47+49+51+53+55+57+59+61+63+65+67+69+71+73+75+77+79+81+83+85+87+89+91+93+95+97+99+101+103+105+107+109+111+113+115+117+119+121+123+125 = 92416 qui est le carré de 304

et

88447-1-3-5-7-9-11-13-15-17-19-21-23-25-27-29-31-33-35-37-39-41-43-45-47-49-51-53-55-57-59-61-63-65-67-69-71-73-75-77-79-81-83-85-87-89-91-93-95-97-99-101-103-105-107-109-111-113-115-117-119-121-123-125-127-129-131-133-135-137-139-141-143-145-147-149-151-153-155-157-159-161-163-165-167-169-171-173-175-177-179-181-183-185-187-189-191-193-195-197-199-201-203-205-207-209-211-213-215-217-219-221-223-225-227-229-231-233-235-237-239-241-243-245-247-249-251-253-255-257-259-261-263-265-267-269-271-273-275-277-279-281-283-285-287-289-291-293-295-297-299-301-303-305-307-309-311-313-315-317-319-321-323-325-327-329-331-333-335-337-339-341-343-345-347-349-351-353-355-357-359-361-363-365-367-369-371-373-375-377-379-381-383-385-387-389-391-393-395-397-399-401-403-405-407-409-411-413-415-417-419-421-423-425-427-429-431-433-435-437-439-441-443-445-447-449-451-453-455-457-459-461-463-465-467-469-471-473-475-477-479-481-483-485-487-489-491-493-495-497-499-501-503-505-507-509-511-513-515-517-519-521-523-525-527-529-531-533-535-537-539-541-543-545-547-549-551-553-555-557-559-561-563-565-567-569-571-573-575-577-579-581-583-585-587-589-591-593-595-597-599-601-603-605-607

= 3969 qui est le carré de 63.

Alors que si on commence à partir de 88447-floor(sqrt(88447))² c'est à dire 238 on a :

238-595-597-599-601-603-605-607 = -3969 c'est à dire abs(3969)= un carré

Soit seulement 7 itérations.

Comment savoir qu'on reprend à partir de 595 les nombres impairs..?
On fait juste la différence floor(sqrt(88447))² - (floor(sqrt(88447))-1)²
= 297² - 296² = 593
Donc on reprend avec 593+2 c'est à dire 595.

J'ai l'impression que c'est pas très clair tout ça, mais je vous fais confiance ; alors ALS, si vous pouviez m'aider s'il vous plaît encore une éniéme fois : )
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 Mai 2015 10:43    Sujet du message: Répondre en citant

Bonjour guimzo,
Le programme demandé est très simple à mettre en place:

Code:

> p:=88447:
> q:= floor(sqrt(p))^2 - (floor(sqrt(p))-1)^2;
> a:= p- floor(sqrt(p))^2;

                               q := 593


                               a := 238

> r:=q:
> do
>  r:=r+2:
>  if is(sqrt(abs(a-r)),integer) then break end if:
>  a:=a-r
> od:
> abs(a-r),p+abs(a-r);

                             3969, 92416



r évolue de 2 en 2 à partir de la valeur initiale q:
On sort de la boucle lorsque a-r est un carré c'est à dire lorsque sqrt(abs(a-r)) est entière.
Dans ce cas on affiche abs(a-r) et p+abs(a-r).

A plus tard.
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: 25 Mai 2015 13:25    Sujet du message: Répondre en citant

Bonjour ALS,

Merci encore une fois : )
La séquence fonctionne nickel mais toujours le même probléme...des "grands" nombres...

Bonne fête de Pentecôte : )
À bientôt mon prof préféré : )

P.S.: Sinon, il y à une solution graphique pour factoriser p semi-premier, c'est en utilisant des fonctions avec les parties entières, plus précisément l'intersection de ces deux fonctions :

f(x)= floor(p/x)

g(x) = p / (floor(sqrt(x²-1))+1)

( La partie des courbes qui nous intéresse est entre la droite d'équation y=x et la droite d'équation y=2x )

Si vous tracez les deux courbes f(x) et g(x), vous remarquerez que les deux courbes se superposent sauf à un point précis où les courbes sont sur la même droite, et ces points sont solutions de la factorisation de p.

Graphique :

https://scontent-cdg2-1.xx.fbcdn.net/hphotos-xfp1/v/t1.0-9/11009178_1606605106286491_3715175350776020919_n.jpg?oh=69444fc072fdf19203c9e4546893bc31&oe=560D422A
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.