Pomoc w zmianie kodu na wypełnianie tablicy dwuwymiarowej losowymi liczbami pierwszymi

0

Witam,
chciałem napisać program w c++, który ma w sobie 2 funkcje i wypełnia tablicę dwuwymiarową 10 na 10 elementów losowymi liczbami pierwszymi z przedziału od 1-100. Problemem moim jest to, że nie potrafię zastosować tutaj metody sita Eratostenesa, za każdą próbą wywalało tyle błędów, że momentami miałem dość. Program jest prawie dobry ale nie wiem jak wyeliminować to, aby nie wyświetlał on liczb takich jak: 9,15,27 czy 49. Polegałem na metodzie prób i błędów i poniżej jest efekt tego, co po dłuższym czasie udało mi się zrobić.


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

const int rozmiar=10;

int funkcja1()
{
    return rand()% 100 + 1;
}

bool funkcja2(int liczba)
{
    for(int i=2;i<liczba;i++)
        {
        if(liczba%i==0)
            return true;
        else
            return false;
        }
}

int main()
{
    srand( time( NULL ) );
    int t;
    int **liczby = new int*[rozmiar];
    for(int i=0;i<rozmiar;i++) liczby[i]=new int[rozmiar];
    for(int i=0;i<rozmiar;i++)
    {
        for(int j=0;j<rozmiar;j++)
        {
            do
            {
                t=funkcja1();
            }
    while(funkcja2(t));
            liczby[i][j]=t;
            cout << t << "     ";
        }
        cout << endl;
    }

    return 0;
}

 

Proszę Was o pomoc

0

funkcja2 jest błędna (swoją droga przemyśl nazewnictwo). To, że liczba nie jest podzielna przez jakieś i nie oznacza od razu, że nie będzie podzielna przez inne (np nie dzieli się przez 3 ale przez 7 już tak - 49). Możesz zwrócić false dopiero po sprawdzeniu wszystkich (tak naprawdę nie wszystkich, bo eliminujemy wielokrotności) dzielników.

0

To nadaje się wyłącznie na kosz. Pokaż tę próbę z sitem Eratostenesa. Czy zdajesz sobie sprawę że liczby będą się powtarzać w twojej tablice?

1

łap sito z komentarzami z litości (najprościej jak się da), odtąd już powinieneś dać radę:
http://ideone.com/66nvNc

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