π
<-

Déterminer le nième nombre premier.

:32tins: :32tinsktpb: :32tinsktpn: :32tinscas: :32tinstpkc: :32tinstpktpb: :32tinstp: :32tinscastp: :32tinscmc: :32tinscx: :32tinscxcas:

Re: Déterminer le nième nombre premier.

Message non lude parisse » 07 Mar 2021, 20:38

Il n'y a pas lieu de calculer un n2 ici.
Il vaut mieux a mon avis tester la parite en premier et utiliser une boucle for qu'une boucle while dans un cas comme celui-ci, ca evite d'oublier d'incrementer la variable d'indice, donc en Python mettre for k in range(3,n,2): puis utiliser un test et un return: if k*k>n: return 1
En C, tout se fait dans l'instruction for.
Code: Tout sélectionner
// pour n<2^32
if (n<2) return 0;
if (n%2==0) return n==2;
for (unsigned k=3;k*k<=n;k+=2){
  if (n%k==0) return 0;
}
return 1;

L'astuce d'ajouter 2*k+1 a une variable pour tester ne sert pas reellement ici, car on ne va pas tester de tres grandes valeurs de k, ca prendrait trop de temps, disons pas plus que 2^16 en pratique, donc k*k va se faire en multipliant des entiers 32 bits, ce qui prend 1 cycle sur les CPU modernes.
Ce qui prend le plus de temps, c'est le calcul du reste euclidien.
Et si on veut optimiser encore plus, on utilise une table de nombres premiers, par exemple <=10000 pour eviter de tester avec des entiers non premiers.
Avatar de l’utilisateur
parisseVIP++
Niveau 12: CP (Calculatrice sur Pattes)
Niveau 12: CP (Calculatrice sur Pattes)
Prochain niv.: 94.2%
 
Messages: 3810
Inscription: 13 Déc 2013, 16:35
Genre: Non spécifié
Calculatrice(s):
MyCalcs profile

Re: Déterminer le nième nombre premier.

Message non lude Bisam » 10 Mar 2021, 20:38

Mais tu as parfaitement raison : j'ai fait n'importe quoi... Je n'avais pas les yeux en face des trous.

Je corrige dans les messages précédents.
Avatar de l’utilisateur
BisamAdmin
Niveau 15: CC (Chevalier des Calculatrices)
Niveau 15: CC (Chevalier des Calculatrices)
Prochain niv.: 69.6%
 
Messages: 5670
Inscription: 11 Mar 2008, 00:00
Localisation: Lyon
Genre: Homme
Calculatrice(s):
MyCalcs profile

Précédente

Retourner vers Problèmes divers / Aide débutants

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 4 invités

-
Rechercher
-
Social TI-Planet
-
Sujets à la une
Comparaisons des meilleurs prix pour acheter sa calculatrice !
"1 calculatrice pour tous", le programme solidaire de Texas Instruments. Reçois gratuitement et sans aucune obligation d'achat, 5 calculatrices couleur programmables en Python à donner aux élèves les plus nécessiteux de ton lycée. Tu peux recevoir au choix 5 TI-82 Advanced Edition Python ou bien 5 TI-83 Premium CE Edition Python.
Enseignant(e), reçois gratuitement 1 exemplaire de test de la TI-82 Advanced Edition Python. À demander d'ici le 31 décembre 2024.
Aidez la communauté à documenter les révisions matérielles en listant vos calculatrices graphiques !
1234
-
Faire un don / Premium
Pour plus de concours, de lots, de tests, nous aider à payer le serveur et les domaines...
Faire un don
Découvrez les avantages d'un compte donateur !
JoinRejoignez the donors and/or premium!les donateurs et/ou premium !


Partenaires et pub
Notre partenaire Jarrety Calculatrices à acheter chez Calcuso
-
Stats.
2126 utilisateurs:
>2100 invités
>20 membres
>6 robots
Record simultané (sur 6 mois):
29271 utilisateurs (le 11/07/2025)
-
Autres sites intéressants
Texas Instruments Education
Global | France
 (English / Français)
Banque de programmes TI
ticalc.org
 (English)
La communauté TI-82
tout82.free.fr
 (Français)