Determinare se un numero è primo in C

Nel seguente esercizio svilupperemo un programma, che dato un valore numerico in input, determinerà se il valore inserito è un numero primo.
Innanzitutto dobbiamo partire con la definizione di numero primo. Un numero primo si può definire come un numero naturale maggiore di 1, divisibile solamente per 1 e per se stesso. Ad esempio 2, 7 e 13 sono primi mentre 4 e 6 non lo sono perché sono divisibili rispettivamente per 2 e per 2, 3.

Per realizzare il programma dobbiamo iniziare chiedendo all’utente di inserire un numero “num”. Successivamente definiamo una variabile “primo” inizializzata ad 1, cioè consideriamo tutti numeri inizialmente come numeri primi. In seguito eseguiamo un ciclo for che parte dal valore 2 fino al valore num - 1, ovvero escludiamo il valore 1 e il valore num. In questo modo possiamo controllare se “num” è divisibile per uno dei valori di “i”, se si, significa che il numero non è primo in quanto divisibile da più di due numeri e assegnamo alla variabile “primo” valore 0 e usciamo dal ciclo for utilizzando una break. Mentre se nessun valoro di “i” è divisore di “num”, il programma esce dal ciclo for con la variabile “primo” ancora assegnata al valore 1.

Una volta uscito dal ciclo for, dobbiamo controllare se la variabile “primo” possiede valore 1 e che il numero inserito “num” sia diverso da 1. Se queste condizioni sono verificate allora il numero inserito è primo, altrimenti si tratta di un numero non primo.

Nel codice seguente è stato utilizzato un ciclo for per poter far inserire all’utente N caratteri da far controllare, dove N è una costante, e dopo ogni inserimento il programma determinerà se il numero inserito è pari o dispari.


  
#include <stdio.h>

int main(){
	int num, primo;

    printf("Inserisci un numero: ");
	scanf("%d", &num);

    primo = 1;
	for(i=2; i<num; i++){
		if(num%i==0){
			primo = 0;
            break;
		}
	}

    if(primo && num != 1){
        printf("Il numero inserito è un numero primo.\n");
	}else{
        printf("Il numero inserito non è un numero primo.\n");
    }

	return 0;
}

Indice pagine linguaggio C: