Bonjour tout le monde!
Aujourd'hui je vais vous présenter un programme que j'ai fait et qui peut vous aider en spé maths si vous êtes en terminale S, lorsqu'on fait de l'arithmétique notamment (mais si vous l'utilisez pour autre chose tant mieux ), j'ai nommé: "DIV" (ok ce n'est pas très très original, vous pouvez le nommer comme vous voulez ).
Il vous donne tous les diviseurs (positifs et négatifs) d'un nombre entier non nul (Nb: si le diviseur correspond à la racine carrée de |N| il vous le donne en double, puisqu'il forme un couple de diviseurs avec lui même).
Le tout en seulement113o 82o !!! (et vous pouvez supprimer certaines parties notamment pour la saisie ~sécurisée, qui prend 11o).
Voici le code (Après les // ce sont des commentaires explicatifs):
http://www.mediafire.com/?a6fq7cc7e7lv11r
Et un screenshot:
Voilà, en espérant que ça sera utile à quelques uns!
Aujourd'hui je vais vous présenter un programme que j'ai fait et qui peut vous aider en spé maths si vous êtes en terminale S, lorsqu'on fait de l'arithmétique notamment (mais si vous l'utilisez pour autre chose tant mieux ), j'ai nommé: "DIV" (ok ce n'est pas très très original, vous pouvez le nommer comme vous voulez ).
Il vous donne tous les diviseurs (positifs et négatifs) d'un nombre entier non nul (Nb: si le diviseur correspond à la racine carrée de |N| il vous le donne en double, puisqu'il forme un couple de diviseurs avec lui même).
Le tout en seulement
Voici le code (Après les // ce sont des commentaires explicatifs):
- Code:
Repeat Nnot(fPart(N //On attend un entier non nul //fPart = PartDéc sur une fr // not() = non()
Prompt N
End
{1->L1
For(A,2,sqrt(abs(N //sqrt = fonction racine carrée
//Si A est un diviseur on le sauve.
If not(fPart(N/A
A->L1(1+dim(L1
End
//On retrouve les diviseurs associés à ceux qui ont été trouvés (si 2 divise 36, 36/2=18 divise aussi 36), puisqu'on s'est arrêté à la racine de N
augment(L1,N/L1 //augment() = chaîne()
//On gère les opposés
augment(-Rép,Rép->L1
SortA(L1 //On trie les résultats //sortA() = triCroi()
L1 //On les affiche (en fin de prgm ça permet un défilement, donc si vous voulez mettez Pause mais pas de Disp)
http://www.mediafire.com/?a6fq7cc7e7lv11r
- Ancien code moins optimisé (EDIT du 26/09/13):
- Code:
Repeat Nnot(fPart(N //On attend un entier non nul
Prompt N
End
abs(N->N
DelVar IDelVar L1For(A,1,sqrt(N //sqrt = fonction racine carrée
//Si A est un diviseur on le sauve, avec le diviseur qui lui est associé (par exemple si N = 8 et A = 2, on sauve 2 et 8/2 = 4, pour plus d'efficacité).
If not(fPart(N/A
Then
I+2->I
A->L1(I-1
N/A->L1(I
End
End
//Le bloc qui suit permet de donner les opposés des diviseurs
2I->dim(L1
-L1->L2
SortD(L2
L1+L2->L1
SortA(L1 //On trie les résultats
L1 //On affiche les résultats (en fin de prgm ça permet un défilement, donc si vous voulez mettez Pause mais pas de Disp)
http://www.mediafire.com/?cv7z03nexgh03t5
Et un screenshot:
Voilà, en espérant que ça sera utile à quelques uns!
Dernière édition par m@thieu41 le Jeu 26 Sep 2013 - 18:22, édité 7 fois