Trovare il prossimo numero primo

di il
2 risposte

Trovare il prossimo numero primo

Devo fare questo esercizio: Creare un file “main.c”. Nel file, si realizzi in linguaggio C la funzione corrispondente alla seguente
dichiarazione:
extern unsigned int prossimo_numero_primo(unsigned int x);
La funzione deve ritornare il più piccolo numero primo maggiore di x

Io ho fatto questo programma ma non capisco il motivo per cui non funziona, anche se mi sentivo abbastanza sicuro..
int primo(int val){

	int i;
	for (i = 2; i < val; i++){

		if (val % i == 0){

			return 0;
		}

	}

	return 1;

}

unsigned int prossimo_numero_primo(unsigned int x){

	int i = x + 1;
	int t = 0;
	while (t == 0){

		t = primo(i);
		i++;


	}

	return i;
}


int main(){

	int x = prossimo_numero_primo(23);
	return 0;


}

2 Risposte

  • Re: Trovare il prossimo numero primo

    Qual è l'errore che riscontri? Ti da sempre un valore aumentato di 1? In questo caso è perchè incrementi i sia che primo() ritorni true che ritorni false.
    Potresti scrivere meglio
    while(!primo(i))
    {
    	i++;
    }
    A parte che poi lo devi anche stampare nel main():
    printf("%d\n",prossimo_numero_primo(23));
  • Re: Trovare il prossimo numero primo

    Okay grazie mille, adesso ho capito!
Devi accedere o registrarti per scrivere nel forum
2 risposte