Rechercher : dans
Par :

[PHP] Tester si un nombre premier

Dernière réponse le 6 jun 2008 à 11:12:31 Zahra_T, le 6 jun 2008 à 09:31:42 
 Signaler ce message aux modérateurs

Bonjour,
J’essai de programmer une page php dans la quel se trouve un formulaire (zone texte + bouton submit) pour tester si un nombre entrer dans la zone texte est premier ou non et afficher le résultat dans la même page.
voici le code:

///////////////////////////////////////////////////////
<html>
<head>
<title> premier </title>
<link rel="stylesheet" type="text/css" href= "style.css">
</head>

<body>
<div>
<form name="formulaire" method="POST" action="premier.php">
<label> Entrer l'entier à testé </label><br \><br \>
<input type="text" name="entier" size=5 Maxlength=3>
<blink> <input type="submit" value="Testez" name="entier"> </blink>
<br \><br \>
<label>

<?php
function premier($a)
{
$nbdiv=0;
if(($a<0) || ($a=0))
{
echo " Entrée non valide <br \> Réessayez d'entrez un entier de nouveau";
}
else
{
for($i=1; $i<=$a; $i++)
{
$rest=$a%$i;
if($rest=0)
$nbdiv++;
}
if($nbdiv = 2)
echo $a." est premier";
else
echo $a." n'est pas premier";
}

}

$tmp=premier($entier); // $tmp=premier($_POST['entier']);

?>

</label>
</form>
</div>

</body>
</html>
//////////////////////////////////////////////////////

il y a deux problème que se code produit.
1- lorsque je tape un nombre dans la zone texte et je clic sur le boutton le nombre s'efface
2- l'affichage du résultat reste toujours "0 est un nombre premier"

kelk1 peut m'aider??
Merci d'avance

Configuration: Windows Vista
Firefox 2.0.0.14

Meilleures réponses pour « [PHP] Tester si un nombre premier » dans :
Vérifier si un nombre entier est un nombre premier en C Voir Définition nombre premier Algorithme 1 : les diviseurs compris entre 2 et N-1 seront testés Algorithme 2 : les diviseurs pairs ne seront pas testés, la recherche se limitant aux diviseurs impairs Algorithme 3 : les diviseurs impairs jusqu'à la...
[Shell] Tester une variable numérique VoirTester une variable numérique    Préambule Dans un environnement "shell", les variables sont, par défaut, de type "chaîne de caractères". De ce fait il n'est pas possible de déclarer une variable de type "entier" (enfin, ceci n'est pas tout à...
Exercice assembleur x86 nombre premier VoirIntroduction Notions abordées dans cet exercice Enoncé Rappel Corrigé Explication Introduction Ce petit exercice d'assembleur vise les architectures x86 (Processeurs Intel et Amd 32 bits) et utilise la syntaxe de Nasm, un assembleur...
PHP - Expressions régulières VoirQu'est-ce qu'une expression régulière? Les expressions régulières sont des modèles créés à l'aide de caractères ASCII permettant de manipuler des chaînes de caractères, c'est-à-dire permettant de trouver les portions de la chaîne correspondant au...
PHP - Structures conditionnelles VoirQu'est-ce qu'une structure conditionnelle? On appelle structure conditionnelle les instructions qui permettent de tester si une condition est vraie ou non, c'est-à-dire si la valeur de son expression vaut 0 ou 1 (le PHP associe le mot clé true à 1...

1

JR des cavernes, le 6 jun 2008 à 09:35:28

Il te met toujours "0 est un nombre premier" car à cet endroit là : if(($a<0) || ($a=0)) tu définit $a comme étant égal à 0.

En php l'affectation se fait avec = et la comparaison avec ==

Tu as fait l'erreur dans chacun de tes if

Répondre à JR des cavernes

2

Zahra_T, le 6 jun 2008 à 09:46:02

Vous avez raison, Merci
J'ai corrigé le code mais toujours il ne fonctionne pas.
Il affiche dès que j'ouvre la page "Entrée non valide Réessayez d'entrez un entier de nouveau" et même si passe un entier pour le tester.

Répondre à Zahra_T

3

JR des cavernes, le 6 jun 2008 à 10:02:55

Oui tu as d'autres choses à changer :

$tmp=premier($_POST['entier']); à la place de $tmp=premier($entier);

Et le principal problème vient du fait que ton champ text et ton bouton ont le même nom.

Je te suggère de changer le nom de ton bouton en "tester" par exemple. Ca devrait marcher maintenant

Répondre à JR des cavernes

4

Zahra_T, le 6 jun 2008 à 10:28:30

Oui ça marche, Merci infiniment
Ça parait difficile pour des novices en php comme moi
Pour ceux qu'ils l'on besoin voici le code
///////////////////////////////////

<?php
function premier($a)
{
$nbdiv=1;
if(($a>0))
{
for($i=3; $i<=$a; $i++)
{
$rest=$a%$i;
if($rest==0)
$nbdiv++;
}
if($nbdiv == 2)
echo $a." est premier";
else
echo $a." n'est pas premier";

}
else
{
echo " Entrée non valide <br \> Réessayez d'entrez un entier de nouveau";
}

}

$tmp=premier($_POST['entiertxt']);

?>

////////////////////////////////////
Mais je vais vous posez une question si vous le permettez
pourkoi dès que j'ouvre la page il m'affiche au premier "Entrée non valide Réessayez d'entrez un entier de nouveau" même après ces changements que j'ai fais ???
Merci

Répondre à Zahra_T

5

JR des cavernes, le 6 jun 2008 à 10:57:54

De rien...

Il t'affiche au premier "Entrée non valide Réessayez d'entrer un entier de nouveau" car la variable $_POST['entiertxt'] n'existe pas à ce moment là est la fonction est quand même appelée.
Pour éviter cela tu peux faire un test sur l'existence de la variable :


if(isset($_POST['entier']))
{
$tmp=premier($_POST['entier']);
}

Répondre à JR des cavernes

6

 Zahra_T, le 6 jun 2008 à 11:12:31

Merci

Répondre à Zahra_T