dzimen
#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 "<
  • Najlepsze
  • Wszystkie komentarze
M4ks
M4ks
M4ks
0
@dzimen: kartkówka w gimnazjum?
dzimen
dzimen Autor
0
@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
P.....3
P.....3
@dzimen: Zrób sobie że podajesz dzielnik i tyle :p
dzimen
dzimen Autor
0
@Porana123: ale jak?
P.....3
P.....3
@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.
dzimen
dzimen Autor
0
@Porana123: Nwm jak to napisać
P.....3
P.....3
@dzimen: Zrobione byle jak na szybko więc upewnij się że to działa xD

public static boolean isPrime(long n, long divider){
if(n==2)
return
dzimen
dzimen Autor
0
@Porana123: nie działa...
dzimen
dzimen Autor
0
@Porana123: co to jest ten divider?
dzimen
dzimen Autor
0
@Porana123: Czy takie przekazanie do switch'a wystarczy?
int n;
cout<<"Podaj liczbe: ";
cin>>n;
if(algliczbapierwsza(n,a))
P.....3
P.....3
@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.
dzimen
dzimen Autor
0
@Porana123: to co ci powyżej wysłałem jest w switchu w case'u.