19/05/2023: A causa di un errore sono stati cancellati, insieme ad account creati da bot, alcuni account legittimi. Si prega di leggere qui: https://www.gambas-it.org/smf/index.php?topic=9733.0
A 3 miliardi ti ha dato out of bound perchè il limite di elementi è 2^32-1.
Se non erro il codice di Vuott non fa uso di vettori e questo potrebbe spiegare il fatto che è veloce il doppio.
int *list
For i = 2 To n If v[i] = False Then Print i Endif Next
...potresti tradurre in gambese il codice scritto in C ....
Public Sub Main() Dim limite, dime, lim, i, j, z As Integer Dim lista As Integer[] limite = 1000000 dime = limite / 2 + 1 lista = New Integer[dime] Print 2 lim = Sqr(CFloat(limite)) j = 1 i = 3 While i <= lim If lista[j] = 0 Then z = j + i While z < dime lista[z] = -1 z += i Wend Print i Endif i += 2 Inc j Wend While i < limite - 1 If Not lista[j] Then Print i i += 2 Inc j WendEnd
...gambese ? http://www.jokisaari.net/gambia/pics/gambia-map.gif
Crivello in C vuott 22371,8590736389 msec / 22567,2857761383 msecSetaccio Vuott 24636,3999843597 msec / 24362,3239994049 msecSetaccio Top Fuel 26364,4378185272 msec / 25966,2098884583 msecSetaccio Gianluigi 30971,825838089 msec / 29990,3969764709 msec
Nei programmi Gambas puro hai usato Fast ?
Citazione da: Top Fuel - 08 Ottobre 2016, 18:13:27A 3 miliardi ti ha dato out of bound perchè il limite di elementi è 2^32-1.Il limite di elementi di cosa?
Citazione da: Gianluigi - 08 Ottobre 2016, 18:15:48Citazione da: Top Fuel - 08 Ottobre 2016, 18:13:27A 3 miliardi ti ha dato out of bound perchè il limite di elementi è 2^32-1.Il limite di elementi di cosa?Il limite di elementi che può avere un array. Dall'errore si deduce che Gambas usa un intero di 4 byte per conteggiare il numero di elementi.
...come fai in Gambas a leggere la cache della CPU?