Bonsoir,
Je me suis lancé un petit défi, qui devrait être récompensé par mon prof de maths demain si je trouve la solution : j'aimerais faire un algorithme sur ma Texas ti-83+ plus trouver le 1000ème nombre premier qui est 7919. Je précise que je ne connais pas les langages d'algorithmes autres que celui utilisé dans les calculettes Texas.
J'ai commencé à faire un programme, mais il ne marche pas vu qu'il m'affiche 231.
Le signe "=>" représente "stocké en"
3=>A
0=>B
While B<998 (car on a déjà 2 et 3)
A+2=>A (comme ça on a que les impairs)
partieEntière(racine de A)=>C
For(i,2,C)
if partEnt(A/i) ≠ 0
Then
B+1=>B
end
end
end
disp A
J'aimerais savoir ce qu'il ne va pas là dedans. Merci d'avance.
oui j'ai vu que j'incrémente B dès que A n'est pas divisible par i, alors qu'il ne faudrait incrémenter B QUE si A est divisible par AUCUN i. Et j'arrive pas à exprimer ça sur la texas
ok. c'est un problème de boucle.
on va régler ça.
mais déjà le test : partEnt(A/i) ≠ 0
n'a pas de sens me semble-t-il.
J'ai trouvé la solution à mon problème ! merci quand même pgeod
Si ça intéresse des gens je peux écrire l'algorithme complet ici
En Haskell, c'est un bonheur :
firas@itsuki ~ % cat prime.hs
import System.Environment
isPrime n = null [a | a <- [2..n-1], mod n a == 0]
nthPrime n = [a | a <- [2..], isPrime a] !! (n-1)
main = do
arg <- getArgs
print (nthPrime (read (arg !! 0)))
firas@itsuki ~ % ghc --make prime.hs
[1 of 1] Compiling Main ( prime.hs, prime.o )
Linking prime ...
firas@itsuki ~ % ./prime 1000
7919
Bonsoir Bachstelze,
en winGHCi, cela donne:
import System.Environment
isPrime n = null [a | a <- [2..n-1], mod n a == 0]
nthPrime n = [a | a <- [2..], isPrime a] !! (n-1)
ex = print $ nthPrime 1000
Scilab : numero_premier(1000)
Très facile avec les fonctions déjà pré-installées mais plus jouissif avec nos fonctions (et aussi plus rapide )
Vous devez être membre accéder à ce service...
Pas encore inscrit ?
1 compte par personne, multi-compte interdit !
Ou identifiez-vous :