Znajdowanie najbliższej liczby pierwszej.

Znajdowanie najbliższej liczby pierwszej.
R9
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 15
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ć?

Kopiuj
 #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++;
            }

        }

    }
}
Patryk27
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
  • Postów: 13042

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.