Posté le 14/02/2022 11:29
Planète Casio v4.3 © créé par Neuronix et Muelsaco 2004 - 2024 | Il y a 60 connectés | Nous contacter | Qui sommes-nous ? | Licences et remerciements
Planète Casio est un site communautaire non affilié à Casio. Toute reproduction de Planète Casio, même partielle, est interdite.
Les programmes et autres publications présentes sur Planète Casio restent la propriété de leurs auteurs et peuvent être soumis à des licences ou copyrights.
CASIO est une marque déposée par CASIO Computer Co., Ltd
Citer : Posté le 14/02/2022 11:33 | #
La décomposition en facteurs premiers serait un peu plus utile que le test de primalité, parce que ça révélerait aussi les puissances de 2 ou d'autres bases.
L'écriture en différente bases peut être utile, selon les usages.
Pour le test de parité tu peux faire plus court avec ⇒ :
B=0⇒"PAIR"◢
B=1⇒"IMPAIR"◢
Et pour le carré parfait, personnellement je préfère recalculer le carré parce que les approximations sont toujours douteuses :
B²=N⇒"CARRE PARFAIT"◢
Note que dès que tu as des nombres de plus de 14-15 chiffres les entiers ne sont plus représentés correctement (ça passe en notation scientifique et les chiffres des unités sont perdus) ce qui fait que pour Fibonacci, prendre N²±4 n'est pas forcément légitime ; si tu demandes par exemple pour N≥10⁸ la valeur ne sera pas calculée correctement.
Citer : Posté le 14/02/2022 11:47 | #
Merci
Pour la décomposition, on est d'accord que c'est bien ça ?
Frac (N/B)=0⇒B
Le B n'a pas d'incidence sur le début du programme ?
JeuCalc
AnaNombre
Citer : Posté le 14/02/2022 15:14 | #
Pas tout à fait, ça ça te donne la liste des diviseurs mais pas la multiplicité. Pour avoir la multiplicité, il faut diviser N quand tu trouves un diviseur et continuer la recherche au même point.
Là tu testes aussi tous les nombres pairs plus grands que 2, ce qui ne sert à rien (ils ne sont pas premiers) et tous les nombres entre √N+1 et N/2, ce qui ne sert à rien non plus (ils ne divisent pas N).
Citer : Posté le 14/02/2022 15:35 | #
Oooook...
du coup, je suis perdu...
Il faudrait donc que je cale un While quelque part ? Mais où?
JeuCalc
AnaNombre
Citer : Posté le 14/02/2022 15:48 | #
Essaie quelque chose comme ça (j'ai mis des espaces par clarté mais tu ne peux pas les taper). Note la partie importante qui est que si D divise M une fois alors on n'augmente pas D pour voir si il divise plusieurs fois. Et on divise M au fur et à mesure pour contempler uniquement les facteurs restants. Ici je teste toujours les multiples de 2 autres que 2, ce qui est assez lent, mais pour l'exemple c'est déjà pas mal.
N→M
// Diviseur qu'on est en train de tester
2→D
// On s'arrête dès que D > √M pour gagner du temps
While D²≤M
If M Rmdr D=0:Then
// On a un diviseur
D◢
M÷D→M
Else
// Passer au diviseur suivant
D+1→D
IfEnd
WhileEnd
// À la fin il reste un nombre premier
// (Si N=1 il reste 1, et si N<1 il n'y a pas de décomposition)
M≠1⇒M◢
Citer : Posté le 14/02/2022 16:13 | #
Merci, je comprends mieux
Maintenant, est-il possible que le programme m'affiche ''oui'' ou ''non'' s'il est premier ou pas, mais également mettre les diviseurs...
(pas sais je clair si suis...)
Je comprends surtout que j'ai beaucoup perdu, mine de rien...
JeuCalc
AnaNombre
Citer : Posté le 14/02/2022 16:27 | #
Pas de souci. Pour savoir s'il est premier ou pas, tu peux simplement tester à la fin s'il te reste toujours N (puisque ça signifie que la ligne M÷D→M n'a pas été exécutée, et donc qu'aucun facteur premier n'a été trouvé) :
M≠1⇒M◢
// On peut faire :
M≠1⇒M◢
Frac N=0 And N≥2 And M=N⇒"PREMIER"◢
On vérifie quand même calmement que N est un entier ≥ 2, la dernière chose qu'on voudrait ce serait de taper π et qu'il nous dise premier !!
Pour afficher la liste des facteurs, c'est ce qui est fait actuellement de façon crue avec le symbole "◢". Mais pour faire plus ergonomique tu peux les stocker dans une liste (tutoriel ici) et ensuite afficher la liste avec "◢", ce qui donne une vue interactive.
Citer : Posté le 14/02/2022 16:34 | #
Bah quoi ? π = e = 3 c'est bien premier, je vois pas de problème. C.Q.F.D.
Citer : Posté le 14/02/2022 16:43 | #
J'ai juste modifié la fin
Frac N=0 And N≥2 And M=N⇒"OUI"◢
JeuCalc
AnaNombre
Citer : Posté le 14/02/2022 16:44 | #
Oui, il faut juste utiliser If à la place de ⇒ :
If Frac N=0 And N≥2 And M=N
Then "OUI"◢
Else "NON"◢
IfEnd
Citer : Posté le 14/02/2022 16:45 | #
Oui avec un test conditionnel
Then "OUI"◢
Else "NON"◢
IfEnd
Citer : Posté le 14/02/2022 16:53 | #
Bah oui.... Tellement évident que je n'y ai même pas pensé...
Merci, maintenant, est-ce que j'ai ce qu'il me faut pour savoir si un nombre est un nombre triangulaire (1,3,6, 10 etc...), s'il fait partie de Fibonacci, de Fermat ? (pour l'instant je ne tiens pas compte de la longueur du nombre)
Ajouté le 14/02/2022 à 18:25 :
Pour les nombres triangulaire , la formule est
Si 8N+1 possède une racine carrée entière, alors N est triangulaire...
Comment on code ça en Basic, svp ?
J'ai presque honte de demander à tout le temps...
JeuCalc
AnaNombre
Citer : Posté le 14/02/2022 18:29 | #
Si sqrt(8N+1) est un entier alors N est triangulaire.
En gros :
Then "Triangulaire"
Else "Non"
IfEnd
Frac permet de donner la partie décimale. Si c'est = 0 il s'agit d'un nombre entier
(Et de toute façon, vous pouvez pas dire le contraire)
MultipliCasio
RDM Calculs
Back Mirror
A Switch To The Top C
Citer : Posté le 14/02/2022 18:29 | #
Autrement dit, si 8N+1 est un carré parfait... déjà vu ?
Essaie de formuler mathématiquement ce que tu veux calculer à partir des opérations de base (indice : racine carrée, mise au carrée, partie entière, partie fractionnaire...). Ensuite ça devrait se formuler naturellement en Basic.
Citer : Posté le 14/02/2022 18:41 | #
Merci, j'avais l'idée mais je n'avais pas saisi que c'est frac qui permet d'avoir l'entier de la racine...
JeuCalc
AnaNombre
Citer : Posté le 14/02/2022 18:46 | #
Je n'avais pas vu le message de Lephé plus haut concernant les approximations douteuses (notamment pour les grands nombres).
Applique plutôt ce message pour ta valeur plutôt que de passer par Frac
(Et de toute façon, vous pouvez pas dire le contraire)
MultipliCasio
RDM Calculs
Back Mirror
A Switch To The Top C
Citer : Posté le 14/02/2022 18:46 | #
Merci, j'avais l'idée mais je n'avais pas saisi que c'est frac qui permet d'avoir l'entier de la racine...
Non Frac c'est la fonction partie fractionnaire
Citer : Posté le 14/02/2022 18:51 | #
Par contre, c'est curieux, quand je tape 6 ou 10 par exemple, le prog me dit que le nombre est triangulaire, mais si je tape 5, le prog ne m'indique pas que le nombre n'est pas triangulaire...
JeuCalc
AnaNombre
Citer : Posté le 14/02/2022 18:57 | #
Tu es sûr de ne pas avoir oublié le Else ?
Au passage n'aie pas honte de demander, nous sommes tous passés par cette phase d'apprentissage
(Et de toute façon, vous pouvez pas dire le contraire)
MultipliCasio
RDM Calculs
Back Mirror
A Switch To The Top C
Citer : Posté le 14/02/2022 18:58 | #
Je suis en train de m'embrouiller...
Avec les algos ressemblants...
Je crois qu'une pause s'impose....
Z'êtes là demain ?
Bonne soirée
JeuCalc
AnaNombre