› Excel e gli applicativi Microsoft Office › Sfida numero 3: numeri primi gemelli
-
AutoreArticoli
-
Giusto per dare un'idea della bontà dei codici proposti, ecco il resoconto dei miei benchmark su una serie ripetuta cento volte di esecuzione delle routine in gioco. Valori espressi in millisecondi:

Il codice di Mirko è risultato strepitoso oltre che ben congegnato! Bravissimo!
Un saluto a tutti, e grazie per le Congratulazioni!!
Ho trovato in rete un'alternativa simile che ho provato ad utilizzare per elencare i gemelli mediante formula.
Il codice si può migliorare? Intendo quali suggerimenti si possono utilizzare per evitare il ricalcolo dell'intera Function quando come in questo caso richiede troppo tempo.
In questa posizione ho utilizzato:
—————————————————
Static collMarks As New Collection
With collMarks
If .Count = 0 Then
—————————————————
Ci sono alternative nella Function quando imposto il parametro: (Rng As Range,Non avevo mai utilizzato prima un trucco simile. Quale metodo è preferibile utilizzare come regola.
Si accettano consigli
Option Explicit 'Const ToNumber = 10000, Valore modificabile per estensione ricerca Function PrimiGemelli(Rng As Range, Optional Colonna As Boolean) As Long Dim X As Long, Test As Long Const ToNumber As Long = 10000 Dim First() As Byte Dim Pos Static collMarks As New Collection With collMarks If .Count = 0 Then First = ChrW(1) & ChrW(257) & String(ToNumber / 2, ChrW(256)) Test = 3 Do While Test <= ToNumber For X = 2 * Test To ToNumber Step Test First(X) = 0 Next Test = Test + 1 - (Test > 2) Loop Test = 0 For X = 1 To ToNumber If First(X) = 1 Then If Test + 2 = X Then .Add X End If Test = X End If Next End If ReDim Pos(1 To .Count, 1 To 1) For X = 1 To .Count - 1 Pos(X, 1) = .Item(X + 1) - 2 Next End With If Rng.Rows.Count < UBound(Pos, 1) Then PrimiGemelli = Pos(Rng.Rows.Count, 1) - Colonna * 2 Else PrimiGemelli = 0 End If End FunctionAllegati:
You must be logged in to view attached files.Inarrestabile ormai
-
AutoreArticoli
