Cześć Wam, mam problem z zadaniem: http://www.spoj.com/problems/PRIME1/2
Mianowicie za każdym razem otrzymuję wynik "time limit exceeded". Dlaczego? Jakieś podpowiedzi?
include
include
using namespace std;
int number;
int counter = 0;
int *wsk = &counter;
int count();
void range(int[], int, int*);
void prim(int[], int);
int main() {
int n = 0;
int *array = new int[n];
int i = 0;
n = count();
//cout << n << endl;
while (i < n) {
range(array, n, &counter);
i++;
}
//for (int i = 0; i < 2*n; i++) {
// cout << array[i] << endl;
//}
n = n*2-1;
prim(array, n);
system("pause");
return 0;
}
int count() {
int n;
cout << "Podaj ilość zakresów\n";
cin >> n;
return n;
}
void range(int array[], int n, int *wsk) {
int a, b;
while (counter<2*n) {
cin >> a;
array[counter] = a;
counter++;
cin >> b;
array[counter] = b;
counter++;
// cout << endl<<array[counter - 2] << endl << array[counter-1];
}
}
void prim(int array[], int n) {
int i = 0;
int dol, gora, modulo,licznik;
int flaga = 1;
while (i <= n ){
dol = array[i];
gora = array[i + 1];
if (dol == 1)
dol++;
for (dol; dol <= gora; dol++) {
licznik = 2;
modulo = dol % licznik ;
while (modulo != 0 && licznik<dol/2) {
licznik++;
modulo = dol % licznik;
if (modulo != 0)
flaga = 0;
else
flaga = 1;
}
if (dol == 2 || dol ==3)
flaga = 0;
if (flaga == 0)
printf("%d\n", dol);
// cout << dol << endl;
flaga = 1;
}
i+=2;
printf("\n");
}
}