Booster la génération de nombres premiers en C#
Votre code C# vise à identifier les nombres premiers dans une plage spécifiée, mais il est actuellement défectueux, ce qui n'entraîne aucun résultat. Le problème réside dans l'algorithme utilisé pour déterminer la primalité.
Comprendre le code :
La méthode prime_num
tente de trouver des nombres premiers jusqu'à un num
donné. Il initialise isPrime
à true
et parcourt les nombres de 0 à num
. Pour chaque nombre i
, il vérifie la divisibilité par les nombres de 2 à num
. Si i
est divisible par un nombre autre que lui-même, isPrime
devient false
. Seulement si isPrime
reste true
après toutes les vérifications, i
est considéré comme premier et imprimé.
Identification de l'erreur :
L'erreur principale est l'incrément de la boucle externe (for (int i = 0; i <= num; i )
). Cela inclut 0, qui n'est pas un nombre premier, et effectue des vérifications inutiles. La boucle interne effectue également des calculs redondants.
Une solution plus efficace :
Pour une génération optimale de nombres premiers, pensez au tamis d'Eratosthène. Cet algorithme améliore considérablement les performances en éliminant les multiples de chaque nombre premier, à partir de 2. Cela réduit considérablement le nombre de vérifications requises.
En bref, l'inefficacité du code original provient d'une itération de boucle incorrecte et de vérifications redondantes. L'emploi d'un algorithme plus efficace, comme le tamis d'Ératosthène ou un tamis à division d'essai, donnera les nombres premiers corrects beaucoup plus rapidement.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!