Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Visual Basic 6 - programma con visual basic
Forum - Visual Basic 6 - programma con visual basic

Avatar
mia (Normal User)
Newbie


Messaggi: 4
Iscritto: 07/06/2011

Segnala al moderatore
Postato alle 16:31
Venerdė, 08/07/2011
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..

PM
Avatar
GN (Member)
Guru


Messaggi: 772
Iscritto: 30/04/2011

Up
1
Down
V
Segnala al moderatore
Postato alle 17:58
Venerdė, 08/07/2011
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.
Codice sorgente - presumibilmente VB.NET

  1. For i As Integer = 0 to n
  2. If i Mod n = 0 'l'operatore mod restituisce il resto della divisione tra i e n
  3. 'se i č divisore di n viene eseguito questo codice
  4. End If
  5. Next


Per verificare se č primo ho trovato queata discussione: http://www.iprogrammatori.it/forum-programmazione/visual-b ...
Quindi, riassumendo:
Codice sorgente - presumibilmente VB.NET

  1. 'nel punto dove devi cercare i divisori primi:
  2.  
  3. Dim DivisoriPrimi As New List (Of Integer)
  4. For i As Integer = 0 to n 'per ogni numero minore di n
  5.  If i Mod n = 0 'se č divisore di n
  6.   If IsPrime(i) = True 'e se č primo
  7.    DivisoriPrimi.Add(i) 'lo aggiungi alla lista.
  8.   End If
  9.  End If
  10. Next
  11.  
  12. 'in un punto della classe fuori da ogni sub o function:
  13.  
  14. Public Function IsPrime(ByVal n As Long) As Boolean
  15.    Dim r As Long
  16.    Select Case n
  17.       Case Is < 1: Err.Raise 5, "IsPrime", "IsPrime: argomento errato !"
  18.       Case 1: ' niente, non e' primo !
  19.       Case 2, 3: IsPrime = True
  20.       Case Else
  21.          r = n Mod 6
  22.          If r = 1 Or r = 5 Then  ' se n Mod 6 e' diverso da 1 o 5 il numero NON e' primo.
  23.             For r = 3 To Sqr(n) Step 2   ' controllo tutti i divisori dispari...
  24.                If (n Mod r) = 0 Then Exit Function
  25.             Next
  26.             IsPrime = True
  27.          End If
  28.    End Select
  29. End Function


Ultima modifica effettuata da GN il 08/07/2011 alle 21:44
PM