[Python] Piccolo chiarimento su codice numeri primi Python

Messaggioda Arduino93 » 17/03/2019, 11:00

Perchè se metto N=2 il codice mi restituisce 2 nella lista?
2 è un numero primo però per come è strutturato il codice non dovrebbe inserirlo nella lista, o sbaglio?
Per i =2 e j=2 , il range del ciclo interno sull'indice j va da 2 a 1 ed ho resto zero.
Cosa sbaglio nel leggere il codice codice?
Non capisco solo il caso per i=2 come si comporta il codice, dato che il range di j diventa (2,1).


link.
https://drive.google.com/file/d/1Hb39UJ ... sp=sharing
Arduino93
Starting Member
Starting Member
 
Messaggio: 10 di 18
Iscritto il: 24/12/2018, 11:04

Re: [Python] Piccolo chiarimento su codice numeri primi Python

Messaggioda claudio86 » 17/03/2019, 11:34

Se N = 2, il ciclo esterno ha una sola iterazione dove i = 2, mentre il ciclo interno non ha nessuna iterazione (perché range(2, 2) è vuoto).

Comunque, la prossima volta incolla il codice direttamente. Mai usare un'immagine per mostrare del codice.
"This theorem, as many others, is proven by writing zero in a creative way…"
claudio86
Average Member
Average Member
 
Messaggio: 505 di 507
Iscritto il: 09/01/2011, 15:12

Re: [Python] Piccolo chiarimento su codice numeri primi Python

Messaggioda Arduino93 » 17/03/2019, 12:32

Ok per il suggerimento dell'immagine!
Riguardo il ciclo interno, allora devo scrivere range (2,i+1) ?
Adesso sta (2,i) che dovrebbe essere (2,1) in quanto il range si ferma a (i-1). Non so se mi sono spiegato
Arduino93
Starting Member
Starting Member
 
Messaggio: 11 di 18
Iscritto il: 24/12/2018, 11:04

Re: [Python] Piccolo chiarimento su codice numeri primi Python

Messaggioda claudio86 » 17/03/2019, 12:53

i non vale mai 1, parte da 2 e arriva fino a N. (2, i) vale (2, 2).
range(a, b) è vuoto se b < a + 1, quindi il ciclo interno non viene eseguito nemmeno una volta.

Non capisco quello che vuoi fare, quella funzione trova correttamente i numeri primi.
"This theorem, as many others, is proven by writing zero in a creative way…"
claudio86
Average Member
Average Member
 
Messaggio: 506 di 507
Iscritto il: 09/01/2011, 15:12

Re: [Python] Piccolo chiarimento su codice numeri primi Python

Messaggioda Arduino93 » 17/03/2019, 13:02

"range(a, b) è vuoto se b < a + 1"
Mi ero perso questa parte qui!

Ragionavo sul fatto che il range si interrompe a STOP - 1, nel senso che nel caso (a,b) il range vale (a, b - 1)
Arduino93
Starting Member
Starting Member
 
Messaggio: 12 di 18
Iscritto il: 24/12/2018, 11:04

Re: [Python] Piccolo chiarimento su codice numeri primi Python

Messaggioda claudio86 » 17/03/2019, 14:03

range(a, b) crea un iteratore che va da "a" a "b - 1".
È una espressione come tutte le altre, non un costrutto specifico per i cicli for. Puoi anche stampare il risultato (convertendolo prima in una lista) con print(list(range(a, b)))
"This theorem, as many others, is proven by writing zero in a creative way…"
claudio86
Average Member
Average Member
 
Messaggio: 507 di 507
Iscritto il: 09/01/2011, 15:12

Re: [Python] Piccolo chiarimento su codice numeri primi Python

Messaggioda Arduino93 » 17/03/2019, 16:00

oK grazie
Arduino93
Starting Member
Starting Member
 
Messaggio: 13 di 18
Iscritto il: 24/12/2018, 11:04


Torna a Informatica

Chi c’è in linea

Visitano il forum: Nessuno e 3 ospiti