08/07/11 15:58
GN
Per trovare i divisori basta un ciclo che per ogni numero tra zero e n controlli con l'operatore Mod se il resto della divisione tra il numero corrente e n è zero.
Per verificare se è primo ho trovato queata discussione: iprogrammatori.it/forum-programmazione/visual-basic/…
Quindi, riassumendo:
For i As Integer = 0 to n If i Mod n = 0 'l'operatore mod restituisce il resto della divisione tra i e n 'se i è divisore di n viene eseguito questo codice End If Next
Per verificare se è primo ho trovato queata discussione: iprogrammatori.it/forum-programmazione/visual-basic/…
Quindi, riassumendo:
'nel punto dove devi cercare i divisori primi: Dim DivisoriPrimi As New List (Of Integer) For i As Integer = 0 to n 'per ogni numero minore di n If i Mod n = 0 'se è divisore di n If IsPrime(i) = True 'e se è primo DivisoriPrimi.Add(i) 'lo aggiungi alla lista. End If End If Next 'in un punto della classe fuori da ogni sub o function: Public Function IsPrime(ByVal n As Long) As Boolean Dim r As Long Select Case n Case Is < 1: Err.Raise 5, "IsPrime", "IsPrime: argomento errato !" Case 1: ' niente, non e' primo ! Case 2, 3: IsPrime = True Case Else r = n Mod 6 If r = 1 Or r = 5 Then ' se n Mod 6 e' diverso da 1 o 5 il numero NON e' primo. For r = 3 To Sqr(n) Step 2 ' controllo tutti i divisori dispari... If (n Mod r) = 0 Then Exit Function Next IsPrime = True End If End Select End Function
Ultima modifica effettuata da GN 08/07/11 19:44
aaa