Ciao e bentornato.
Volevo dartene un altro sfida, un altro compito.
Ovviamente, questo sta andando per essere tutto sugli array.
Voglio che tu abbia familiarità con come utilizzare un array, come accedere a un array
e come creare un array.
Quindi dovresti scrivere un programma c che troverà tutti i numeri primi
da 3 a 100.
E lo faremo in modo molto efficiente.
Quindi useremo un po ' algoritmo che ti fa utilizzare
un array, ma un programma molto semplice.
Verrà visualizzato come output, tutti i numeri primi da 3 a 100.
E il motivo per cui non fai 0 a 3 è perché li codificherai,
è piuttosto semplice.
I primi 2 i nostri primi 2 numeri primi sono 1 e 2 diversi da 0.
Quindi non ci sarà alcun input a questo programma, solo output.
E l'output sarà ogni numero primo separato da uno
spazio su una singola riga.
È piuttosto semplice, fino a 100.
Avrai bisogno di creare un array che memorizzerà ogni
numero primo man mano che viene generato.
Puoi hardcodificare il primo 2 numeri primi, che sono 2
e 3 nell'array dei primi.
Quindi quello che immagino qui è questo creeresti un array,
lo chiameresti numeri primi e lo faresti solo codificare i primi 2 in là.
Ed è importante codificare in modo rigido anche
loro perché l'algoritmo che useremo per trovare i numeri primi si confronteranno con tutti
gli altri numeri primi, e Lo spiegherò in un secondo.
Vuoi utilizzare i loop per questo compito trovare solo i numeri primi
fino a 100.
Quindi, subito, dovresti immagina almeno un ciclo per visualizzare i
numeri primi che hai trovato.
Quindi quella sarebbe probabilmente la fine loop, il loop alla
fine del programma che viene eseguito l'array dei numeri primi e visualizza tutto ciò che
è al suo interno.
ora se stai trovando tutto il primo numeri fino a 100, non avrai bisogno
di fare la dimensione dell'array probabilmente più di 50 perché non credo che
ci siano più di 50 prime numeri, fino a 100, ma non sarai in
grado di impostarli esattamente correttamente perché non sai quanti numeri
primi ci sono.
Quindi direi quando crei il file array di numeri primi, basta creare una dimensione di 100.
Quindi hai sicuramente bisogno di un ciclo per stamparli alla fine.
avrai bisogno di un altro ciclo per cercare di trovare i numeri primi.
E puoi trovare i numeri primi qualsiasi l'algoritmo che vuoi, ma quello
che userei è che userei qualcosa del genere perché ci sono più ragioni per usare un array
se fai questo algoritmo.
Quindi i criteri che possono essere utilizzati
identificare un numero primo è che un numero è considerato primo se non è uniformemente divisibile per
altri numeri primi precedenti.
E c'è anche di più a quell'algoritmo, ma questo è
il punto di partenza.
Vuoi anche solo guardare fino a un certo numero.
Quindi puoi usare quanto segue come file x condizione nel ciclo più interno.
Quindi di nuovo, di cosa avrai bisogno avere qui è che probabilmente
avrai bisogno di 2 loop.
Abbiamo già accennato al terzo loop in
basso per stampare i dati, ma sarà necessario avere 2 loop per questo compito.
E l'algoritmo di cui sto discutendo ecco un algoritmo più migliorato.
Quindi questo è il motivo per cui vuoi farlo.
Ora se vuoi trovare i numeri primi in un modo diverso, va
bene finché usi un array perché il l'intero
scopo dell'assegnazione non è capire i numeri primi, lo è per capire come utilizzare gli array.
Guardando il precedente numeri primi generati che ti costringono a usare un
array e tu memorizza ogni numero primo man mano che viene
generato come ho detto.
E l'altro modo che puoi fare ancora più ottimale è che non vuoi guardare i
numeri pari.
Quindi se stai affrontando ciascuno numero da 3 a 100 e stai
controllando se è primo, puoi ignora i numeri pari perché i numeri pari
non saranno mai primi.
Quindi nel ciclo più esterno o nel file ciclo più
interno, puoi verificare se il numero primo è divisibile per altri numeri primi o assicurati che non lo sia nemmeno puoi
controllarlo e saltarlo.
E poi quest'altra condizione dell'asse nel ciclo più interno è assicurarsi che
il valore di p non lo faccia superare la radice quadrata dei numeri primi, questa è
l'altra parte dell'algoritmo.
Quindi questo potrebbe non avere pienamente senso, ma fondamentalmente questi sono alcuni dei criteri che voglio
che tu segua.
Salta qualsiasi controllo per i numeri pari, e poi l'algoritmo deve cercare eventuali numeri
primi precedenti che sono stati generati e anche per verificare se p
non lo fa supera la radice quadrata dei numeri primi perché è un'altra modo per
verificare la presenza di un numero primo.
Quindi avrai bisogno di avere un ciclo for che va
sostanzialmente da 5 a 100 e poi puoi incrementalo di 2 in modo da
cercare solo numeri dispari.
E poi in un loop interno per te avere lì
dentro, vorrai andare da 1 a quest'altro il valore p diviso per primo sub-I è maggiore di uguale a
primo sub-I.
E probabilmente vorrai anche fare sicuro che il numero non sia primo.
Quindi non vuoi superare un certo controllo e poi vuoi anche saltare fuori dal ciclo interno
se hai effettivamente trovato un numero primo.
E quindi il modo in cui puoi verificare numero primo se il tuo numero attuale è
divisibile per qualsiasi numero primo precedente, così puoi guardare l'array dei numeri primi.
E se il modulo per quello è uguale a 0, quindi non hai
un numero primo.
Altrimenti, se l'hai fatto controllo intero in questo intero ciclo
e sei già uscito da lì il superamento del primo sub-I è
maggiore del primo sub-I della radice quadrata problema e non hai effettivamente trovato un
numero primo, quindi significa che puoi quindi aggiungere quel numero primo al tuo array di numeri primi e poi
basta stampare l'array dei numeri primi.
Quindi l'algoritmo vero e proprio no sembra confuso come lo sto facendo io.
Di nuovo, prova a darti come molti suggerimenti pseudocodici lì
possibili con l'esterno per loop nel ciclo for interno.
Ma avrai bisogno di
accedere array, leggerai array, guarderai un array per vedere i valori precedenti.
Ti prenderà molto familiarità con gli array.
Quindi buona fortuna e ti fornirò un file soluzione nella prossima lezione che avrà
molto più senso, ma queste sono i requisiti e alcuni risultati.
Grazie.