Nombres premiers, le crible d'Eratosthène avec Kedama
From OFSET Wiki
Contents |
[edit] Introduction
Le crible d'Eratosthène permet de calculer les nombres premiers inférieurs à un nombre donné, la limite.
Pour ce faire:
- On barre le nombre 1 dont tous les nombres sont multiples.
- 2 est le premier des nombres premiers, On barre tous les multiples de 2.
- Le premier nombre non barré qui suit est un nombre premier car il n'est pas un multiple des nombres qui précèdent. On barre tous les multiples de ce nombre et on recommence avec le prochain nombre non barré.
- Arrivé à la fin de la liste, il ne reste que des nombres premiers non barrés.
[edit] Représentation du crible avec Kedama
- Les tortues Kedama sont numérotées, chaque tortue représente un nombre entier.
- Chaque tortue qui est un multiple dépose une trace.
- Chaque tortue qui est un nombre premier change de couleur et inscrit son numéro dans une liste.
[edit] Numérotation des tortues
On utilisera le procédé déjà vu précédemment, mais cette fois le compteur sera une variable et non un texte.
[edit] Création de variables
Pour créer une variable:
- - cliquer sur le bouton V dans le titre du visualiseur de commandes.
- - nommer la variable dans la fenêtre de saisie qui apparaît.
[edit] Numérotation
- On crée une variable compteur dans le monde Kedama. Cette variable est créée dans le monde Kedama car elle est unique et accessible à toutes les tortues.
- On crée une variable myId dans la race de tortues Kedama. Cette variable crée dans une race de tortues est propre à chaque tortue et en autant d'exemplaires que de tortues.
- Le script numérote: initialise le compteur à 0. Cette commande est exécutée une fois.
- Les commandes envoyées par la race de tortues sont exécutées par toutes les tortues avant de passer à la commande suivante. Pour faire exécuter plusieurs commandes de suite par une même tortue, il faut placer ces commandes dans un test. Un test sana condition est vrai par défaut, il faut placer les commandes en face de oui.
[edit] Répartition des tortue
On va ranger les tortues en lignes.
- La position dans la ligne (x) est le reste du numéro de la tortue divisé par 100.
- Le position de la rangée (y) est la partie entière de la division du numéro par 100.
Toutes les tortues se mettent en colonnes puis toutes dans la bonne rangée, si ces deux instructions sont placées dans un test, toutes les tortues prennent leur place les unes après les autres. Le résultat final est le même, toutes les tortues sont à leur place.
[edit] Recherche du prochain nombre premier et marquage
- On met la variable trouve à faux
On teste si la tortue a un numéro supérieur au dernier nombre premier trouvé
- si oui
- On teste si la tortue n'est pas marquée
- si oui
- On teste si le nombre premier suivant a été trouvé
- si oui
- On teste la divisibilité du numéro de la tortue
- si oui
- On marque la tortue et on la colore en bleu
- si oui
- On teste la divisibilité du numéro de la tortue
- si non
- On met à vrai la variable trouve, on colore la tortue en jaune et on ajoute son numéro à la liste des nombres premiers (voir ci-dessous Affichage des résultats).
- si oui
- On teste si le nombre premier suivant a été trouvé
- si oui
- On teste si la tortue n'est pas marquée
A la fin du script, un test vérifie si une tortue sans marque a été trouvée, si non on désactive le script.
[edit] Affichage des résultats
Les nombres premiers trouvés seront affichés dans un texte déroulant. Ce texte déroulant est un objet texte multimédia (GeeMailMorph). Il n'est plus disponible à partir de l'interface Squeak, mais toujours présent dans le code de l'image mais les briques E-toy de la catégorie texte de son texte ne fonctionnent pas correctement.
Le projet http://swiki.ofset.org:8000/super/uploads/GeeMailOk.004.pr contient un texte déroulant et corrige les briques. De plus ce texte contient déjà les scripts qui nous seront utiles.
- - Obtenir le halo du texte inclu dans le texte multimédia après plusieurs alt/clic au début du texte en haut à gauche.
- - Avec le halo jaune élargir le texte à la dimension de la fenêtre.
- - Pour voir les scripts, ouvrir le visualiseur de commandes avec la halo oeil bleu.
Le script
permet d'effacer le texte, ce script est utilisé à l'initialisation.
Le script
permet d'ajouter une valeur numérique à la fin du texte ce script est utilisé lorsqu'un nouveau nombre premier est trouvé.
[edit] Insertion du texte déroulant dans le projet
Pour amener le texte déroulant dans notre projet, il faut le copier dans le presse papier, puis passer à notre projet et l'insérer.
[edit] Copie dans le presse papier
- - ouvrir le menu du texte multimédia avec son halo rouge.
- - choisir impression et copie... puis copier vers le presse papier.£une copie de l'objet est en mémoire dans le presse papier. Revenir au projet Kedama Crible.
[edit] Insertion dans le projet
- - Ouvrir le menu monde (Touche Echapp ou Esc.
- - Choisir nouveau Morph... / depuis le presse-papier.
Ouvrir le visualiseur de commandes du texte et prendre la brique
de la catégorie script, la placer dans le script suivant de la tortue en substituant la brique de la variable
à sa valeur numérique, ce qui donne
Voir et étudier le projet:






