begin process at 2010 08 01 01:14:53
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Divers

 > DIVISEURS & NOMBRES PREMIERS

DIVISEURS & NOMBRES PREMIERS


 Information sur la source

Note :
9 / 10 - par 1 personne
9,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Divers Niveau :Débutant Date de création :10/03/2005 Vu :2 347

Auteur : olive92

Ecrire un message privé
Site perso
Commentaire sur cette source (6)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Ce code se décompose en 3 fonctions indépendantes qui permettent respectivement de calculer les diviseurs d'un nombre, de déterminer si un nombre est premier ou non et de rechercher tous les nombres premiers entre 2 valeurs. Le script est compatible avec IE (Win et Mac), Safari, Netscape...

Source

  • <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 TRANSITIONAL//EN">
  • <html>
  • <head>
  • <title>@Calculs des diviseurs d'un nombre et des nombres premiers en Javascript@</title>
  • <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  • <script type="text/javascript">
  • <!--
  • function diviseur()
  • {
  • div=document.calculs.entree1.value;
  • if (div != "")
  • {
  • for (i=1; i<=div; i++)
  • {
  • mod=div % i;
  • if (mod == 0)
  • document.calculs.sortie.value+=i+", ";
  • }
  • }
  • else
  • alert("il manque une valeur !");
  • }
  • function nbrepremier1()
  • {
  • nbre1=document.calculs.entree1.value;
  • if (nbre1 > 2)
  • {
  • premier=true;
  • for (var i=2; i<=Math.ceil(Math.sqrt(nbre1)); i++)
  • {
  • mod=nbre1 % i;
  • if (mod == 0)
  • {
  • premier=false;
  • break;
  • }
  • else
  • continue;
  • }
  • if (premier != false)
  • alert(nbre1+" est un nombre premier");
  • else
  • alert(nbre1+" n'est pas un nombre premier");
  • }
  • else
  • alert("Choisissez une valeur minimale de 3 !");
  • }
  • function nbrepremier2()
  • {
  • incr=0;
  • nbre1=document.calculs.entree1.value;
  • nbre2=document.calculs.entree2.value;
  • if (nbre1 >= 10 && nbre2 >= 11)
  • {
  • for (var z=nbre1; z<=nbre2; z++)
  • {
  • premier=true;
  • for (var i=2; i<=Math.ceil(Math.sqrt(z)); i++)
  • {
  • mod=z % i;
  • if (mod == 0)
  • {
  • premier=false;
  • break;
  • }
  • else
  • continue;
  • }
  • if (premier != false)
  • {
  • incr++;
  • document.calculs.sortie.value+=z+", ";
  • }
  • }
  • window.status=incr+" nombres premiers trouvés";
  • }
  • else
  • alert("Choisissez une valeur minimale de 10 et de 11\nrespectivement comme valeur basse et haute");
  • }
  • function cleanup()
  • {
  • document.calculs.sortie.value="";
  • document.calculs.entree1.value="";
  • document.calculs.entree2.value="";
  • }
  • -->
  • </script>
  • </head>
  • <body bgcolor="lightblue">
  • <h2 align="center">Voici quelques programmes sur les nombres<br />(1)</h2><hr width=75% />
  • <div align="justify">Cette page comprend 3 fonctions :<ul><li>Calculer les diviseurs d'un nombre;</li><li>Déterminer si un nombre est premier ou non;</li><li>Rechercher les nombres premiers entre 2 valeurs limites (peut nécessiter beaucoup de puissance de calcul).</li></ul></div>
  • <form name="calculs">
  • <input type="text" name="entree1" size="15"/> <b>limite basse</b>
  • <br />
  • <input type="text" name="entree2" size="15"/> <b>limite haute (pour le calcul des "nombres premiers(2)")</b><br />
  • <textarea name="sortie" rows="20" cols="90"></textarea>
  • <br />
  • <u>Zone de résultats</u>
  • <br /><br />
  • <input type="button" onClick="diviseur();" value="DIVISEURS" /> Recherche des diviseurs d'un nombre.
  • <br />
  • <input type="button" onClick="nbrepremier1();" value="NOMBRES PREMIERS(1)" /> La valeur choisie est-elle un nombre premier ?
  • <br />
  • <input type="button" onClick="nbrepremier2();" value="NOMBRES PREMIERS(2)" /> Recherche des nombres premiers entre "limite basse" et "limite haute".
  • <br />
  • <br />
  • <input type="button" onClick="cleanup();" value="EFFACER LES ANCIENNES VALEURS" /> Effacer les valeurs des différents champs de saisie.
  • </form>
  • </body>
  • </html>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 TRANSITIONAL//EN">
<html>
	<head>
		<title>@Calculs des diviseurs d'un nombre et des nombres premiers en Javascript@</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script type="text/javascript">
<!--
function diviseur()
{
div=document.calculs.entree1.value;
if (div != "")
{
for (i=1; i<=div; i++)
{
mod=div % i;
if (mod == 0)
document.calculs.sortie.value+=i+", ";
}
}
else
alert("il manque une valeur !");
}

function nbrepremier1()
{
nbre1=document.calculs.entree1.value;
if (nbre1 > 2)
{
premier=true;
for (var i=2; i<=Math.ceil(Math.sqrt(nbre1)); i++)
{
mod=nbre1 % i;
if (mod == 0)
{
premier=false;
break;
}
else
continue;
}
if (premier != false)
alert(nbre1+" est un nombre premier");
else
alert(nbre1+" n'est pas un nombre premier");
}
else
alert("Choisissez une valeur minimale de 3 !");
}

function nbrepremier2()
{
incr=0;
nbre1=document.calculs.entree1.value;
nbre2=document.calculs.entree2.value;
if (nbre1 >= 10 && nbre2 >= 11)
{
for (var z=nbre1; z<=nbre2; z++)
{
premier=true;
for (var i=2; i<=Math.ceil(Math.sqrt(z)); i++)
{
mod=z % i;
if (mod == 0)
{
premier=false;
break;
}
else
continue;
}
if (premier != false)
{
incr++;
document.calculs.sortie.value+=z+", ";
}
}
window.status=incr+" nombres premiers trouvés";
}
else
alert("Choisissez une valeur minimale de 10 et de 11\nrespectivement comme valeur basse et haute");
}

function cleanup()
{
document.calculs.sortie.value="";
document.calculs.entree1.value="";
document.calculs.entree2.value="";
}
-->
</script>
	</head>
	<body bgcolor="lightblue">
<h2 align="center">Voici quelques programmes sur les nombres<br />(1)</h2><hr width=75% />
<div align="justify">Cette page comprend 3 fonctions :<ul><li>Calculer les diviseurs d'un nombre;</li><li>Déterminer si un nombre est premier ou non;</li><li>Rechercher les nombres premiers entre 2 valeurs limites (peut nécessiter beaucoup de puissance de calcul).</li></ul></div>
<form name="calculs">
<input type="text" name="entree1" size="15"/> <b>limite basse</b>
<br />
<input type="text" name="entree2" size="15"/> <b>limite haute (pour le calcul des "nombres premiers(2)")</b><br />
<textarea name="sortie" rows="20" cols="90"></textarea>
<br />
<u>Zone de résultats</u>
<br /><br />
<input type="button" onClick="diviseur();" value="DIVISEURS" /> Recherche des diviseurs d'un nombre.
<br />
<input type="button" onClick="nbrepremier1();" value="NOMBRES PREMIERS(1)" /> La valeur choisie est-elle un nombre premier ?
<br />
<input type="button" onClick="nbrepremier2();" value="NOMBRES PREMIERS(2)" /> Recherche des nombres premiers entre "limite basse" et "limite haute".
<br />
<br />
<input type="button" onClick="cleanup();" value="EFFACER LES ANCIENNES VALEURS" /> Effacer les valeurs des différents champs de saisie.
</form>
	</body>
</html>

 Conclusion

Le script a été optimisé : le nombre de calculs a été fortement réduit pour accélérer le temps de traitement.


 Sources du même auteur

Source avec Zip Source avec une capture JEU DES PAIRES
Source avec une capture CRYPTAGE DE TEXTE
NOMBRES PARFAITS
Source avec une capture SUITE DE FIBONACCI
DEFILEMENT HORIZONTAL DE TEXTE

 Sources de la même categorie

Source avec Zip Source avec une capture TROUVER UN ITINÉRAIRE AVEC GOOGLE MAP par amrounix
Source avec Zip DECOMPTEUR ET CHECKBOX TEMOIN par dialvb
Source avec Zip L'API GOOGLE EARTH par brennal
Source avec Zip SIMULER UN SERVEUR COMET (EN PUSH) EN PHP ET JS par sebcap26
OPÉRATIONS SUR MATRICES par Minilogus

Commentaires et avis

Commentaire de jmeunier le 12/03/2005 16:28:45

bonjour,

il me semble qu'en testant la parité du nombre en premier, la ligne
for (var i=2; i<=Math.ceil(Math.sqrt(z)); i++)
pourrait être remplacée par
for (var i=3; i<=Math.ceil(Math.sqrt(z)); i=i+2)
pour accélérer le traitement ...

belle source.

Commentaire de olive92 le 13/03/2005 20:14:29

Merci pour cette info.
En effet, l'idée n'est pas mauvaise mais pourquoi éliminer les valeurs paires pour i ?
D'un autre côté je me demande si l'on ne peut pas simplement faire:
for (var i=2; i<=10; i++)
car j'ai l'impression que tous les nombres non premiers sont divisibles par au moins l'une des valeurs suivantes: 2,3,(4),5,(6),7,(8),9,(10). Ainsi on s'affranchi de la taille du nombre à tester et on va beaucoup plus vite surtout pour les grands nombres premiers....
Je fais des tests et je vois.

Commentaire de olive92 le 14/03/2005 16:28:08

J'ai fais des tests et il est impossible d'utiliser:
for (var i=2; i<=10; i++)
car le script sort des nombres qui ne sont pas premiers (notamment ceux dont les diviseurs sont des nombres premiers)

Commentaire de lenglet le 14/03/2005 22:19:58

Je dois être stupide mais :
Recopiée dans le bloc note, la page html générée indique une erreur de script.
Je ne sais pas du tout où taper un nombre pour avoir ses diviseurs.
Si quelqu'un, forcément moins idiot que moi, peut me donner la soluce, merci...

Commentaire de olive92 le 15/03/2005 18:59:06

pour lenglet:

Quel navigateur utilises-tu ?

Pour avoir les diviseurs d'un nombre, il faut rentrer ce nombre dans le premier champ de saisie et cliquer sur le bouton "DIVISEURS".
Pour déterminer s'il est premier, rentre le nombre au même endroit mais clique ensuite sur "NOMBRES PREMIERS (1)".
Pour rechercher les nombres premiers entre 10 et 1000 par ex, rentre 10 dans le premier champ et 1000 dans le second, puis clique sur "NOMBRES PREMIERS (2).

Voilà

Commentaire de lenglet le 15/03/2005 22:36:15

J'utilise Ie6 et j'ai refait plusieurs copier-coller du code source dans le bloc note pour n'obtenir toujours rien.
Dommage, car ce fichier peut être très utile pour des élèves de CM2.
Si quelqu'un peut m'envoyer un bon fichier à cette adresse, je l'en remercie.
ecole-lenglet@wanadoo.fr

 Ajouter un commentaire




Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Août 2010
LMMJVSD
      1
2345678
9101112131415
16171819202122
23242526272829
3031     

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,281 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales