Oppure

Loading
08/07/11 14:31
mia
come faccio a trovare con visual basic 6 tutti i divisori primi di un numero n inserito in input?
grazie a tutti quelli che risp..
aaa
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.
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