Pourquoi 15 est premier ? - Java - Programmation
Marsh Posté le 07-10-2002 à 20:26:09
paske tu t'arretes pas quand tu as trouve un diviseur
et tu peux t'arreter a p/2 pour la recherche des diviseurs, c suffisant
Marsh Posté le 07-10-2002 à 20:34:48
Ben fo faire le suivi de variable.
p = 15
i = 14
Boucle :
1er passage : b = true (p%i = 1) i=13
2ème passage : b = true (p%i = 2) i=12
3 : b = true (p%i = 3) i=11
4 : b = true (p%i = 4) i=10
5 : b = false i=9
....
(i=5) : b = false i=4
...
i=2 : b = true (p%i=1) i=1
Fin de la boucle car si i=1 alors i n'est pas strictement sup à 1
Donc ça renvoie true.
A mon avis ta échangé false et true
Marsh Posté le 07-10-2002 à 20:38:40
c exact
l'algo correct serait
pour i=2 jusqu'a p/2 repeter
si p%i==0 alors
renvoyer faux
fin si
fin pour
renvoyer vrai
Marsh Posté le 07-10-2002 à 20:40:05
Code :
|
sans le i>(p/2) ca marche et avec le i>(p/2)) 15 ets denouvo premier
Marsh Posté le 07-10-2002 à 20:42:50
euh ... pour s'arreter a p/2 faut commencer dans l'autre sens
tu commences a 2 et tu t'arretes a p/2
Marsh Posté le 07-10-2002 à 20:46:54
Code :
|
11 est pu premier
Marsh Posté le 07-10-2002 à 20:49:50
Code :
|
Marsh Posté le 07-10-2002 à 20:54:48
Taz@PPC a écrit a écrit :
|
ca je sais pas ... p/2 c sur
et renvoyer vrai c mieux
Marsh Posté le 07-10-2002 à 21:25:32
EpoK a écrit a écrit : ok merci |
On peut s'arreter a sqrt(p), c'est certain.
Marsh Posté le 08-10-2002 à 08:56:07
Pis bon, on peut aussi un tantinet améliorer les choses, en commençant par vérifier si par hasard le nombre est pas pair, et ensuite en ne prenant en compte que les diviseurs impairs, pasque bon.....
Enfin, en temps de calcul, s'arrêter à sqrt(p), je sais pas si c'est une bonne solution : le calcul de sqrt prendra sans doute plus de temps que la vérification un peu astucieuse jusqu'à p/2, non???
Marsh Posté le 08-10-2002 à 09:03:41
même à racine de P pour s'arreter...
perso, pour les nb premiers, je préfère largement le crible d'Eratostène ! bcp plus rapide !
Marsh Posté le 08-10-2002 à 09:18:37
excellent le titre du topic
Marsh Posté le 08-10-2002 à 10:04:39
Il serait préférable d'écrire ceci à la place de ce que tu as posté en haut de ce topic (plus lisible) :
Code :
|
Plusieurs remarques :
Si maintenant on tient compte des remarques (judicieuses) qui t'ont été faites par les autres forumeurs, plus quelques tests aux limites supplémentaires, cela donne :
Code :
|
Marsh Posté le 08-10-2002 à 10:32:35
EpoK a écrit a écrit :
|
beurk. elle est pas belle ton indentation : c'est moche de metter les '{' à la ligne !
Marsh Posté le 08-10-2002 à 10:48:11
rabat-joie
Marsh Posté le 08-10-2002 à 10:50:18
DarkLord a écrit a écrit : rabat-joie ![]() |
j'aime pas le parenthèsage qui mutiplie la longueur du code par 2
Marsh Posté le 08-10-2002 à 13:15:16
benou a écrit a écrit : j'aime pas le parenthèsage qui mutiplie la longueur du code par 2 ![]() |
idem, je suis aussi d'accord... ça devient illisible si faut tout faire défiler pour 3 malheureuses lignes de code !
Marsh Posté le 08-10-2002 à 13:18:39
benou a écrit a écrit : j'aime pas le parenthèsage qui mutiplie la longueur du code par 2 ![]() |
j'ose ? j'ose pas ? j'ose ? j'ose pas ?
allez, j'ose : PYTHON ROXOR
Marsh Posté le 08-10-2002 à 17:59:20
benou a écrit a écrit : beurk. elle est pas belle ton indentation : c'est moche de metter les '{' à la ligne ! ![]() |
Arrete! C'est beaucoup plus lisible au contraire!
Chaque accolade est alignée avec son homologue!
Marsh Posté le 08-10-2002 à 20:23:47
Moi, c'est comme ça que je fais (ce qui n'est pas une référence ). Je trouve ça lisible d'une façon limpide.
En QuickBasic, on fait aussi comme ça .
Y en a qui préfèrent if () {
....
}
Chacun sa méthode.
Marsh Posté le 08-10-2002 à 20:31:07
Taz@PPC a écrit a écrit : et si zetes pas contents, faites du Python ![]() |
ca a quoi de particulier?
Marsh Posté le 08-10-2002 à 20:33:35
c'est l'indentation qui définit les bloc et pas des {} ou des begin/end. y a pas de ; non plus
Code :
|
Marsh Posté le 08-10-2002 à 22:45:36
Taz@PPC a écrit a écrit : le fameux troll de l'accolade ouvrante. c'est en rien typique d'un langage de programamtion, c'est juste un style. et si zetes pas contents, faites du Python ![]() |
C'est une question de convention pas de "style"...
Maintenant libre a chacun d'adopter les conventions qui lui plaisent (du moment qu'il travaille avec des gens qui adoptent les memes conventions que lui bien sur... sinon tout le monde pete un plomb)
Au passage, l'accolade a la ligne est une convention C++, tout comme l'est la nomination des variables par "m_variable"
Marsh Posté le 09-10-2002 à 23:03:25
y a quand même une suptilité : y a une des 2 méthode qui est la convention de codage java et pas l'autre : http://java.sun.com/docs/codeconv/ [...] 0.html#182
Marsh Posté le 10-10-2002 à 10:12:57
Les conventions de codage recommandées par Sun ne sont pas un hasard : d'après les nombreuses études qui ont été menées sur le sujet depuis pas mal d'années, ce sont celles qui sont les plus efficaces pour faire appréhender au lecteur la structure du code d'un seul coup d'oeil, puis faciliter la lecture et la compréhension de ce code.
En particulier, pour revenir au sujet de la position de l'accolade ouvrante, c'est la structure de bloc abstrait qui semble la plus efficace pour comprendre le plus rapidement possible la structure de contrôle (début, fin, condition d'arrêt) :
while ####### begin |
Marsh Posté le 10-10-2002 à 10:38:28
benou a écrit a écrit : y a quand même une suptilité : y a une des 2 méthode qui est la convention de codage java et pas l'autre : http://java.sun.com/docs/codeconv/ [...] 0.html#182 ![]() |
Marsh Posté le 11-10-2002 à 04:18:09
"i divise p et i > racine de p
ssi p/i divise p et p/i < racine de p"
cqfd
donc tu peux t'arreter a racine de p (inclus of course)
LeGreg
Marsh Posté le 11-10-2002 à 09:27:36
legreg a écrit a écrit : "i divise p et i > racine de p ssi p/i divise p et p/i < racine de p" cqfd donc tu peux t'arreter a racine de p (inclus of course) LeGreg |
Utilisation abusive de cqfd... qu'as tu demontre ? rien !
(je sais je chipotte)
Marsh Posté le 11-10-2002 à 19:01:47
j'ai demontre qu'on pouvait s'arreter a la racine de p
qu'est-ce que j'y peux si la demonstration tient
en une ligne??
LeGreg
Marsh Posté le 12-10-2002 à 02:10:09
ben dans ce cas le cqfd est une ligne trop haut, mais bon, on s'en fout
Marsh Posté le 12-10-2002 à 10:43:39
lorill a écrit a écrit : ben dans ce cas le cqfd est une ligne trop haut, mais bon, on s'en fout ![]() |
ben dites donc... vous avez pas l'air d'aimer les démonstrations vous
Marsh Posté le 07-11-2002 à 17:44:22
EpoK a écrit a écrit :
|
Initialise b a true
et ajoute la condition b == true dans ton while
Parcequ'une fois qu'il est pas premier, il est pas premier !!!
Marsh Posté le 07-11-2002 à 17:48:44
ouh le déterrage de topic !!!
(surtout ceux ou on avait deja donné la solution )
Marsh Posté le 07-10-2002 à 20:16:41
15%5=0 alors pk y me sort :