Poster une réponse 
Les nombres premiers… (JavaScript Global et par actualisation)
05-01-2012, 11:13 AM
Message : #1
Les nombres premiers… (JavaScript Global et par actualisation)
On va faire un fichier pour déterminer si un entier est premier ou pas.

Le nombre nb sera entré dans le ChampTexte1
On fera afficher :
texte1 (si nb est premier)
texte2 (si nb n'est pas premier)

[Image: premier.png]

arrow Les commandes "premier" et "Diviseurs" existent dans le calcul formel de GeoGebra 4.2 Smile
mais pas dans GeoGebra 4 decu

Alors, on va faire ça en JavaScript roll




Dans le JavaScript global, on définit une fonction premier de paramètre nb

Code :
function ggbOnInit() {}
function premier(nb)
{
var m=Math.floor(Math.pow(nb,.5));
if (nb==1) {return false};
if (nb==2) {return true};
if (nb%2==0) {return false};
for (d=3;d<=m;d=d+2)
{if (nb % d==0) {return false}};
return true;
}

Le résultat de cette fonction est un booléen qui vaut :
faux si le nombre n'est pas premier
true si le nombre est premier


flecherouge En français (en Algorithmique), cela donnerait ça :

------------------------
m := la partie entière de racine carrée de nb

Si nb = 1 alors FAUX (1 n'est pas premier)
Si nb = 2 alors FAUX (2 n'est pas premier)
Si le reste de la division euclidienne de nb par 2 = 0 alors FAUX (les nombres pairs ne sont pas premiers)

Pour d = 3 jusqu'à m avec un pas de 2 (car on ne teste plus les nombres pairs)
début pour
Si le reste de la division euclidienne de nb par d = 0 alors
début si
FAUX (d est un diviseur de nb)
On arrête l'algorithme
fin si
fin pour
VRAI (si on arrive là, c'est qu'on a fait toute la boucle pour sans trouver de diviseurs)
On arrête l'algorithme
------------------------



Ensuite, pour afficher soit texte1 soit texte2 :
dans le script JavaScript d'actualisation du nombre nb, on écrit :

Code :
with (ggbApplet){
nb=getValue("nb");
if (premier(nb))
{evalCommand("SetVisibleInView[ texte1, 1, true ]");
evalCommand("SetVisibleInView[ texte2, 1, false ]")}
else
{evalCommand("SetVisibleInView[ texte2, 1, true ]");
evalCommand("SetVisibleInView[ texte1, 1, false ]")}
}



Tout marche alors bien… sauf si le nombre entré n'est pas entier ou négatif
Il faut donc interdire l'entrée d'un nombre non entier ou négatif hum
Nous avons déjà vu cela ici fi_lone_ranger

On va créer 2 nombres
Code :
nb=3
nbb=3

Puis, dans le script JavaScript d'actualisation du nombre nb, on rajoute :
Code :
ne=Math.floor(nb);
nbb=getValue("nbb");
if ( nb===ne &&nb>=0) {setValue("nbb",nb)}
else {setValue("nb",nbb)}


Essayez dans le fichier suivant… roll


[Image: 118.gif]
Visiter le site internet de cet utilisateur Trouver tous les messages de cet utilisateur
Citer ce message dans une réponse Return to top
Poster une réponse