Maison > développement back-end > C++ > le corps du texte

Une solution intéressante serait d'obtenir que tous les nombres premiers soient inférieurs à n ?

WBOY
Libérer: 2023-09-03 12:41:07
avant
625 Les gens l'ont consulté

Une solution intéressante serait dobtenir que tous les nombres premiers soient inférieurs à n ?

Ici, nous verrons comment générer de manière efficace tous les nombres premiers inférieurs à n. Dans cette méthode, nous utiliserons le théorème de Wilson. D'après son théorème, si un nombre k est un nombre premier, alors ((k - 1)! + 1) mod k sera 0. Regardons l'algorithme pour avoir cette idée.

Cette idée ne fonctionnera pas directement dans des langages comme C ou C++ car elle ne prend pas en charge les grands entiers. Factorielle produit de grands nombres. La traduction chinoise de

algorithm

genAllPrime(n)

Begin
   fact := 1
   for i in range 2 to n-1, do
      fact := fact * (i - 1)
      if (fact + 1) mod i is 0, then
         print i
      end if
   done
End
Copier après la connexion

Example

est :

Example

#include <iostream>
using namespace std;
void genAllPrimes(int n){
   int fact = 1;
   for(int i=2;i<n;i++){
      fact = fact * (i - 1);
      if ((fact + 1) % i == 0){
         cout<< i << " ";
      }
   }
}
int main() {
   int n = 10;
   genAllPrimes(n);
}
Copier après la connexion

Output

2 3 5 7
Copier après la connexion

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!

Étiquettes associées:
source:tutorialspoint.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal