Napisz program w języku C++, który wczyta z klawiatury liczbę całkowitą n i na standardowe wyjście wypisze:
n nie jest liczbą pierwszą – jeśli n nie jest pierwsza,
n jest liczbą pierwszą numer X – jeśli n jest liczbą pierwszą.
-
Założenie: n >= 2 i n <= 50000.
-
Aby rozwiązanie zostało zaakceptowane musi w nim wystąpić element indeksowania liczb pierwszych w tablicy. Preferowane jest wykorzystanie algorytmu sita Eratostenesa.
-
Wartości "n", "X" na wyjściu należy oczywiście zastąpić odpowiednimi wartościami liczbowymi.
Mam coś takiego, podpowie ktoś co tu zmienić?
#include <iostream>
#include<cstdlib>
using namespace std;
bool pierwsza(int n)
{
if(n<2)
return false;
for(int i=2;i*i<=n;i++)
if(n%i==0)
return false;
return true;
}
int main()
{
int n i, count = 0;;
cout<<"Podaj liczbe: ";
cin>>n;
if(pierwsza(n))
cout<<"Liczba "<<n<<" jest pierwsza"<<endl;
else
cout<<"Liczba "<<n<<" nie jest pierwsza"<<endl;
cout << "Podaj górną granicę: ";
cin >> n;
cout << endl;
int *a = new int;
if (a == 0)
{
cout << "Za mało pamięci" << endl;
return 0;
}
for (i = 2; i < n; i++) a = true;
for (i = 2; i < n; i++)
if (a)
for (int j = i; j*i < n; j++) a = false;
for (i = 2; i < n; i++)
if (a)
{
count++;
cout << i << " ";
}
cout << endl << "Ile : " << count << endl;
return 0;
}