Cześć. Ostatnio na informatyce dostałem do zrobienia zadanie "Liczby pierwsze w trójkolandii".
Link do zadania: http://kraczkowski.info/wp-content/uploads/2011/09/informatyka_PR_II.pdf
Napisałem program w c++, który mogłoby się wydawać, że działa poprawnie ponieważ dobrze rozwiązuje podpunkty a i b tego zadania (sprawdzałem w odpowiedziach), natomiast kiedy przychodzi kolej na podpunkty c i d różniące się tylko rozmiarem przedziału liczb w porównaniu z dwoma poprzednimi, program się wysypuje. Próbowałem zamiast "intów" wstawiać "long inty", ale to dalej nie rozwiązywało problemu. Bardzo proszę o pomoc.
#include <iostream>
using namespace std;
int p,k,i,l,licznik=0,f,w;
int main()
{
cout << "podaj poczatek przedzialu: ";
cin >> p;
cout << "podaj koniec przedzialu: ";
cin >> k;
int tab[k-p];
l=p;
for(i=0; i<k-p; i++) //zapis kolejnych liczb z przedzialu do tablicy
{
tab[i]= l;
l++;
}
for(i=0; i<k-p; i++)
{
if(tab[i] % 3 == 1) //sprawdzanie pierwszego warunku
{
w=0; // jeœli spelniony jest 1. warunek sprawdzanie drugiego warunku
for(f=4; f<tab[i]/2; f=f+3) // sprawdzanie ile dzielnikow, którycb reszta z dzielenia przez 3 jest rowna 1, ma dana liczba
{
if(tab[i] % f ==0)
{
w++;
}
}
if(w==0) //jezeli liczba nie ma zadnych takich dzielników to znaczy, ze w trojkolandii jest liczba pierwsza. program wypisuje te liczbe,
//przy okazji liczac ilosc takich liczb
{
cout << endl << tab[i];
licznik++;
}
}
}
cout << endl << endl << licznik;
return 0;
}