Ok dzięki za rady, poprawny kod:
Kod: Zaznacz cały
#include <iostream>
using namespace std;
int main()
{
int tablica[200000],n,licznik=0;
cout << "Podaj n: ";
cin >> n;
for(int i=0; i<=n; i++)
{
tablica[i]=1; // wstepne przygotowanie tablicy
}
for(int j=2; j<n; j++)
{
int k=j;
while(k<n)
{
k=k+j; // wielokrotnosc danej liczby
tablica[k]=0; // wyzerowanie wielokrotnosci
}
}
for(int m=2; m<n; m++)
{
if (tablica[m]==1) // sprawdzamy, czy m-ty wyraz tablicy jest liczba pierwsza
{
cout << m << endl; // jezeli tak, to wypisujemy
licznik++; // ile liczb pierwszych?
}
}
cout << endl << "W zakresie od 0 do " << n << " znajduje sie " << licznik << " liczb pierwszych wypisanych powyzej." << endl;
return 0;
}
Znajduje liczby pierwsze do 100 tysięcy i je zlicza.

Jak znaleźć więcej liczb pierwszych?
[ Dodano: 2009-04-22, 21:29 ]
Wymodziłem kod do 10 milionów:
Kod: Zaznacz cały
#include <iostream>
using namespace std;
bool tablica[20000000];
int main()
{
int n,licznik=0;
cout << "Podaj n: ";
cin >> n;
for(int i=0; i<=n; i++)
{
tablica[i]=1; // wstepne przygotowanie tablicy
}
for(int j=2; j<n; j++)
{
int k=j;
while(k<n)
{
k=k+j; // wielokrotnosc danej liczby
tablica[k]=0; // wyzerowanie wielokrotnosci
}
}
for(int m=2; m<n; m++)
{
if (tablica[m]==1) // sprawdzamy, czy m-ty wyraz tablicy jest liczba pierwsza
{
cout << m << endl; // jezeli tak, to wypisujemy
licznik++; // ile liczb pierwszych?
}
}
cout << endl << "W zakresie od 0 do " << n << " znajduje sie " << licznik << " liczb pierwszych wypisanych powyzej." << endl;
return 0;
}
Ostatnio zmieniony 23 kwie 2009, 17:01 przez
Luminofor, łącznie zmieniany 2 razy.