Sprawdzenie algorytmu

0

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ą.

  1. Założenie: n >= 2 i n <= 50000.

  2. Aby rozwiązanie zostało zaakceptowane musi w nim wystąpić element indeksowania liczb pierwszych w tablicy. Preferowane jest wykorzystanie algorytmu sita Eratostenesa.

  3. Wartości "n", "X" na wyjściu należy oczywiście zastąpić odpowiednimi wartościami liczbowymi

#include <iostream>
#include <cmath>
#include <iterator>

using namespace std;

int main ()
{
     int n = 50000;
     bool liczby[n+1];
     for (int i=0; i<=n; i++)
     {
         liczby[i]=true;
     }
     liczby [1] = false;
     for (int i=2; i<=sqrt(n); i++)
     {
         if (liczby [i] == true)
         {

         for (int j=i+i; j<= n; j=j+i)
         {
             liczby[j]=false;
         }
     }
}
int ile;
{
int i, wynik;
wynik=0;

for (i=0; i<n; i++){
if (liczby[i]==true)
wynik++;
return wynik;

int w;
w=ile;

if (w==0)
cout<<"brak szukanego elementu";
else
cout<<"element  wystepuje  razy";
}
    int liczba;
    cin >> liczba;
    if (liczby [liczba] == true)
        cout << "jest numer pierwsza " << endl;
else
        cout << "Nie jest liczbš pierwsza " << endl;
}

return 0;

}

Co tu mam poprawić?

2

Co tu mam poprawić?

  1. nazwe tematu
  2. formatowanie kodu
  3. kolorowanie skladni
  4. uzyc wyszukiwarki. Temat szukania liczby pierwszej za pomoca sita jest kazdego tygodnia, nie spominajac juz ze jest kilkanascie rozwiazan w google (pewnie kilkaset a moze nawet tysiecy)
0
     int n = 50000;
     bool liczby[n+1];

To nie jest poprawne, ja wiem, że w codeblocks to przechodzi, ale uczy to mega złego nawyku. (zmień IDE na np VisualStudio 2015+/CLion).
Powinieneś użyć, albo:

     const int n = 50000;
     bool liczby[n];

albo

     int n = 50000;
     bool *liczby=new bool[n+1];

1 użytkowników online, w tym zalogowanych: 0, gości: 1