CCorsi

Trovare i numeri primi fino a cento in C

I numeri primi sono degli elementi importanti quando si parla di Informatica. Si siete mai chiesti il perché? I numeri primi sono delle chiavi univoche, quindi non ripetibili in quanto divisibili per se stessi e per uno.

Questo cosa ha a che fare con l’informatica? Dobbiamo sempre tenere a mente che l’informatica è la matematica sono materie che se pur molto lontane sono collegate.

Basti pensare che i primi elaboratori erano stati progettati da matematici, per farvi un esempio:

  • Pascalina, Blaise Pascal
  • Macchina di Leibniz, Gottfried Wilhelm von Leibniz
  • Macchina Analitica, Charles Babbage

I numeri primi sono fondamentali per la crittografia, in quanto le chiavi crittografiche devo essere difficili da calcolare. Il modello RSA prevede una chiave semplice da calcolare ma difficile da invertire.

Prendiamo ad esempio due numeri primi (97 e 89), il loro prodotto (97*89) è uguale a 8.633. Il risultato della moltiplicazione è facile da calcolare ma è difficile comprendere da quali numeri esso sia derivato (particolarmente se si tratta di numeri primi molto grandi).

Dopo questo cenno sul profondo legame tra i numeri primi e informatica procediamo con la testura del nostro programma per calcolare i numeri primi da 1 a 100.

TROVARE I NUMERI PRIMI DA 1 A 100 – CODICE

#include <stdio.h>
#include <stdlib.h>

int main()
{
	int num = 2;
	while(num < 100)
	{
		int conta = 0;
		int div = 2;
		
		while(div <= (num/2) && conta < 2)
		{
			if(num % div == 0)
			{
				conta = conta + 1;
			}
			div = div + 1;
		}
		
		if(conta == 0)
		{
			printf("%d \n",num);
		}
		num = num + 1;
	}
}

SPIEGAZIONE

Subito dopo aver dichiarato le librerie necessarie ed essere entrati nel mail, dichiariamo la variabile “num” la quale nel corso del programma il numero da analizzare per controllare se sia primo.

Successivamente entriamo all’interno di un ciclo while, il quale effettuerà le operazioni di controllo fino a quando la variabile “num” non sarà pari a 100.

A questo punto dichiariamo due variabili “conta” che conterà il numero di divisori per il numero contenuto in “num” e “div” che dividerà il numero per il quale stiamo dividendo “num”.

Entriamo dunque all’interno di un altro while che verrà eseguito fino a quando “div” sarà minore della metà di “num”(è impossibile che un numero sia divisibile per meno della sua metà) e “conta” sarà minore di due (il che significherebbe che avrebbe trovato già un divisore)

All’interno del while controlleremo se “num” sia divisibile per “div” tramite l’apposito operatore matematico “%” (il quale restituisce il resto della divisione tra “num” e “div”). Nel caso in cui il controllo ci risulti vero incrementeremo il valore di “conta”. Successivamente ad esso incrementiamo il valore di div.

Al termine del secondo while se il valore di conta è uguale a zero (Quindi non abbiamo trovato divisori) faremo visualizzare all’utente il valore di “num”,

Concludiamo dunque con un incremento della variabile “num”

LINK UTILI

Altro Sul C: https://www.developersumo.com/c/
I nostri Corsi: https://www.developersumo.com/corsi/
Pagina Instagram: https://www.instagram.com/developer_sumo/?hl=it
Le nostre App su Play Store: https://play.google.com/store/apps/developer?id=Developer+Sumo

What's your reaction?

Excited
0
Happy
0
In Love
0
Not Sure
0
Silly
0

You may also like

More in:C

Leave a reply

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *