Znajdowanie najbliższej liczby pierwszej.

0

Cześć. Robię zadanie, które polega na znalezieniu najbliższej liczby pierwszej do wczytanej liczby. W przypadku, gdy liczba ma w takiej samej odległości dwie liczby pierwsze, tzn. jedną oddaloną np. o 5 jednostek, a drugą większą o 5 jednostek, należy wypisać tą mniejszą.
Program mi nie wyrabia czasowo, jak mógłbym to naprawić?

 #include <bits/stdc++.h>
#include <sstream>
using namespace std;

bool czy_pierwsza(int n)
{
    if(n<2)
        return false;

    for(int i=2; i*i<=n; i++)
        if(n%i==0)
            return false;
    return true;
}

int main ()
{
    int t;
    scanf("%d",&t);
    for(int i = 0 ; i < t ; i++)
    {
        int a;
        scanf("%d",&a);
        int przed = 0 ;
        int po = 0 ;
        int f = 1;
        if(czy_pierwsza(a)==true)printf("%d\n",a);
        else
        {
            while(przed==0||po==0)
            {
                if(czy_pierwsza(a-f)==true)
                {
                    przed = a-f;
                    printf("%d\n",przed);
                    break;

                }
                if(czy_pierwsza(a+f)==true)
                {
                    po = a + f;
                    printf("%d\n",po);
                    break;
                }
                f++;
            }

        }

    }
}

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