Problem z programem wypisującym liczby pierwsze. Błedny kod.

0

Witam,

celem programu jest wyświetlenie kolejnych 20 liczb po tej która zostanie wpisana z klawiatury ( jeśli wpiszę 4 to przedział liczb od 4 do 24 ) i wypisaniu jedynie liczb 1. Na początek każdej liczbie przypisałem flage 1 a teraz chce zrobic aby zerowal flagi dla liczb które nie są pierwszymi i zostawiał jedynie te pierwsze. Prosze o pomoc. Pozdrawiam

#include<iomanip>
#include <cstdlib>
#include<iostream>
using namespace std;

const int MAX=200;

int LICZBY[MAX];
int FLAGA[MAX];

int main()
{
int n, i, x;
cout<<"Haslo: ";
cin>>n;
x=n+20;

for(int i=n; i<=x; i++)
{
   LICZBY[i]=i;
   FLAGA[i]=1;
        }
   FLAGA[0]=0;
   FLAGA[1]=0;

   for (int i=2; i<=x; i++)
   if(FLAGA[i]==1)
   for (int p=i+i; p<=x; p+=i)
   FLAGA[p]=0;

for(int i=n; i<=x; i++)
cout<<LICZBY[i]<<" "<<FLAGA[i]<<endl;

system("PAUSE");
return 0;
}

0

To się zdecyduj masz wyświetlić wszystkie liczby z przedziału n..n+20 czy kolejne 20 liczb pierwszych ?
Tablicę LICZBY możesz sobie wywalić zastępując wszędzie odwołanie LICZBY[x] na samo x
Nie podałeś z czym masz problem?

0

po co tak utrudniać? Nie lepiej tak ? :

#include <iostream>
using namespace std;

int main()
{
    int liczba_od, liczba_do;
    bool isPrime = true;
    cout << "Podaj przedzial: ";
    cin >> liczba_od >> liczba_do;

    for(int i = liczba_od+1; i < liczba_do; i++)
    {
        isPrime = true;
        for(int j = 2; j < i; j++)
        {
            if(i % j == 0) isPrime = false;
        }
        if(isPrime)
            cout << "Liczba " << i << " jest liczba pierwsza\n";
    }


    cin.sync();
    cin.get();
    return 0;
}

0

zainteresuj się Sitem Eratostenesa. Jeśli chcesz sprawdzić czy dana liczba jest pierwsza. Tutaj masz przykład: http://www.math.edu.pl/algorytmy-sito

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