program już działa tak jak należy i zalicza mi wiekszosc lecz w niektorych dalej jest przekroczenie limitu czasowego. Czy dałoby się jakos ten program przyspieszyc ?
#include <iostream>
#include <stdio.h>
#include <cmath>
using namespace std;
bool sprawdz_czy_pierwsza(int a)
{
if(a<2)
return false;
for(int i=2; i<=sqrt(a); i++)
if(a%i==0)
return false;
return true;
}
int main()
{
int l_testow,liczba, maks;
scanf("%d",&l_testow);
for(int i=0; i<l_testow; i++)
{
scanf("%d",&liczba);
int *tablica;
tablica = new int [liczba+1];
for(int j=0; j<=liczba; j++)
{
tablica[j]=j;
maks=tablica[0];
if( tablica[j]>maks)
maks=tablica[j];
}
if(maks!=0)
{
do
{
if(sprawdz_czy_pierwsza(maks)==1)
{
printf("%d\n",maks);
continue;
}
maks--;
if(sprawdz_czy_pierwsza(maks)==1)
{
printf("%d\n",maks);
continue;
}
}
while(sprawdz_czy_pierwsza(maks)!=1);
delete [] tablica;
}
}
return 0;
}