Forum

Nome Utente:
Password:
Riconoscimi automaticamente
 Tutti i Forum
 Laboratorio
 Bioinformatica e Biostatistica
 Piccolo programma per identificare i numeri primi
 Nuova Discussione  Nuovo Sondaggio Nuovo Sondaggio
 Rispondi Aggiungi ai Preferiti Aggiungi ai Preferiti
Cerca nelle discussioni
I seguenti utenti stanno leggendo questo Forum Qui c'è:

Aggiungi Tag Aggiungi i tag

Quanto è utile/interessante questa discussione:

Autore Discussione  

Martin.diagnostica
Utente Attivo

H. pylori


1582 Messaggi

Inserito il - 13 marzo 2011 : 12:32:34  Mostra Profilo  Visita l'Homepage di Martin.diagnostica Invia a Martin.diagnostica un Messaggio Privato  Rispondi Quotando
Qualche geniaccio che mastica python e caga in perl potrebbe aiutarmi a comprendere meglio queste poche righe di codice. Non capisco le righe commentate cosi #????

>>> for num in range(100) :
	for fat in range(2,num) :
		if num % fat == 0: # ?????
			print num, " e ", fat, "*", num/fat # ?????
			break
	else: 
		print num, "è un numero primo"

in allegato
Allegato: script.txt
3,18 KB

Facebook

chick80
Moderatore

DNA

Città: Edinburgh


11491 Messaggi

Inserito il - 13 marzo 2011 : 13:02:36  Mostra Profilo  Visita l'Homepage di chick80 Invia a chick80 un Messaggio Privato  Rispondi Quotando
% è l'operatore modulo, che restituisce il resto della divisione intera.

Ad es.: 18 % 4 = 2 in quanto 18/4 = 4 con il resto di 2

Se il resto della divisione per un certo fattore è 0 vuol dire che il numero è divisibile per quel fattore e quindi non è primo.

if num % fat == 0:

Controlla se il resto della divisione num/fat sia = 0 (nota l'utilizzo dell'operatore ==, che serve per confrontare i valori. Utilizzare l'operatore = sarebbe sbagliato in quanto quello è l'operatore di assegnazione).

print num, " e ", fat, "*", num/fat

Questo semplicemente ti scrive in output il numero ed il suo fattore.

Ad es. potrebbe darti un output tipo: 15 e 3 * 5 (io avrei messo "=" piuttosto che "e" ma è semplicemente una cosa estetica).

Piccole note per ottimizzare il programmino:

1) è inutile controllare tutti i fattori pari (eccetto 2), in quanto se il numero non è divisibile per 2 non sarà neanche divisibile per 4,6,8,....,2*k
2) è inutile controllare tutti i fattori da 2 a num, dopo aver controllato 2 (vedi punto 1) basta controllare da 3 a sqrt(num)

Qui trovi degli algoritmi ottimizzati:
http://rosettacode.org/wiki/Primality_by_trial_division

Sei un nuovo arrivato?
Leggi il regolamento del forum e presentati qui

My photo portfolio (now on G+!)
Torna all'inizio della Pagina

Martin.diagnostica
Utente Attivo

H. pylori



1582 Messaggi

Inserito il - 13 marzo 2011 : 13:24:32  Mostra Profilo  Visita l'Homepage di Martin.diagnostica Invia a Martin.diagnostica un Messaggio Privato  Rispondi Quotando
Grazie per la spiegazione, sto leggendo un libro della collana packet un pò avaro nelle delucidazioni devo dire
Torna all'inizio della Pagina
  Discussione  

Quanto è utile/interessante questa discussione:

 Nuova Discussione  Nuovo Sondaggio Nuovo Sondaggio
 Rispondi Aggiungi ai Preferiti Aggiungi ai Preferiti
Cerca nelle discussioni
Vai a:
MolecularLab.it © 2003-18 MolecularLab.it Torna all'inizio della Pagina