PDA

View Full Version : ricorsione in C...non finirai mai di uccidermi


lucas87
21-11-2006, 17:27
raga un altro problema ricorsivo. ho fatto una funzione che mi dice se un numero è primo oppure no. ovverso torna 1 se il numero è primo, torna 0 se il numero non è primo. la devo fare con ricorsione. chi mi aiuta. ecco la funzione:

int is_prime(int a){
long r;
if (a==0){
return 0;
}
if (a<=3){
return 1;
}
else {
r=a % 6;
if ((r==1) || (r==5)){
for (r=3;r<=sqrt(a);r=r+2){
if ((a % r) == 0){
return 1;
}
else {
return 0;
}
}

}
}
}

lovaz
21-11-2006, 21:51
Per adesso non mi viene in mente, comunque ti avverto
che 1 non e' primo.

cj++
22-11-2006, 09:02
int isprime(int value, int i){

if(i == (int)(value/2))
return 1;

if(value % i++ == 0)
return 0;
else
isprime(value, i);
}

invocata con isprime(x, 2)

dovrebbe essere ok, ma nn ci giurerei visto che sn in piedi da ieri sera per studiare :cry:

icecube_HU
22-11-2006, 09:02
Per adesso non mi viene in mente, comunque ti avverto
che 1 non e' primo.

Forse hai ragione... (siamo piu' sul filosofico che sul matematico !)

Se vogliamo, allora, zero non e' "non primo", ma la funzione non e' definita, come per i numeri negativi.
Come per il Log, per intenderci...

lovaz
22-11-2006, 09:16
In effetti e' una scelta, come le tante altre che si fanno in matematica

http://it.wikipedia.org/wiki/Numero_primo#Uno_e_zero_non_sono_primi

lucas87
22-11-2006, 14:03
Ma la i che gli devo passare che roba è?

Sephi
22-11-2006, 17:59
Volendo quella i potrebbe anche essere inizializzata a 2 e non passata come parametro, in pratica ti dice quale numero sarà il primo divisore...

wingman87
22-11-2006, 18:24
Se non la passi come parametro non puoi fare la ricorsione