Wpis z mikrobloga

#programowanie #cpp

Siema, mam problem z przekształceniem funkcji sprawdzającej czy liczba jest liczbą pierwszą na funkcję rekurencyjną.

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

case 6:
cout<<"Liczba Pierwsza"<>n;
if(algliczbapierwsza(n))
cout<<"Liczba "<
  • 12
  • Odpowiedz
  • Otrzymuj powiadomienia
    o nowych komentarzach

@M4ks: sprawdzian w technikum... Mam już prawie wszystkie algorytmy w rekurencji ale mam problem właśnie z liczbami pierwszymi/sitem Eratostenesa i rozkładem liczb na czynniki pierwsze
  • Odpowiedz
@dzimen: No checkIfPrime(liczba, poczatkowyDzielnik) który podajesz jako pierwiastek najlepiej i wywołujesz rekurencyjnie dla dzielnika o 1 mniej (chyba że to lepiej ogarniesz i o 2 mniej, bo 1 może być parzysta więc whatever). Stopujesz rekurencje jak dzielnik to 1.
  • Odpowiedz
@dzimen: Co nie działa? To jest w javie jakby co, musisz zmienić coś zapewne. Divider to dzielnik. I jak zmienisz to takie przekazanie wystarczy, o ile jako a podasz własnie cos >= pierwiastek z n. I jakiego switcha, gdzie tu switch? Działa od 2 do 100, dla więcej pewnie też działa, dla 1 daje true, bys musiał dodać swój warunek.
  • Odpowiedz