English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
El筛Eratosthenes es cuando n es menor que10es uno de los métodos más eficientes para encontrar números primos menores que n cuando n es aproximadamente 00 mil.
Se proporciona un programa de demostración del筛Eratosthenes, como se muestra a continuación.
#include <bits/stdc++.h> using namespace std; void SieveOfEratosthenes(int num) { bool pno[num+1]; memset(pno, true, sizeof(pno)); for (int i = 2; i*i <= num; i++) { if (pno[i] == true) { for (int j = i*2; j <= num; j + = i) pno[j] = false; } } for (int i = 2; i <= num; i++) if (pno[i]) cout << i << " "; } int main() { int num = 15; cout << "Los números primos menores o iguales a " << num << " son: "; SieveOfEratosthenes(num); return 0; }
Resultados de salida
La salida del programa anterior es la siguiente.
Los números primos menores o iguales a 15 son: 2 3 5 7 11 13
Ahora, permítanos entender el programa anterior.
Esta funciónSieveOfEratosthenes()
Encuentra todos los números primos anteriores al num proporcionado como parámetro. El fragmento de código proporcionado es el siguiente.
void SieveOfEratosthenes(int num) { bool pno[num+1]; memset(pno, true, sizeof(pno)); for (int i = 2; i*i <= num; i++) { if (pno[i] == true) { for (int j = i*2; j <= num; j + = i) pno[j] = false; } } for (int i = 2; i <= num; i++) if (pno[i]) cout << i << " "; }
Esta funciónmain()
Establece el valor de num y luego imprime todos los números primos menores o iguales a num. Esto se realiza mediante la llamada a una función.SieveOfEratosthenes()
El fragmento de código proporcionado es el siguiente.
int main() { int num = 15; cout << "Los números primos menores o iguales a " << num << " son: "; SieveOfEratosthenes(num); return 0; }