Advertisement
Guest User

Optimized gdscript prime finder

a guest
Oct 16th, 2024
55
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
GDScript 0.80 KB | Source Code | 0 0
  1. extends Node
  2.  
  3. func optimized_sieve_of_eratosthenes(limit: int) -> int:
  4.     if limit < 2:
  5.         return PackedInt32Array().size()
  6.  
  7.     var primes := PackedInt32Array()
  8.     if limit >= 2:
  9.         primes.append(2)
  10.  
  11.     var sieve_size:int = (limit / 2) - 1 + (limit % 2)
  12.     var is_prime := PackedByteArray()
  13.    
  14.     for i:int in range(sieve_size + 1):
  15.         is_prime.append(1)
  16.  
  17.     for i:int in range(sieve_size + 1):
  18.         if is_prime[i]:
  19.             var p:int = 2 * i + 3
  20.             primes.append(p)
  21.             for multiple:int in range(p * p, limit + 1, 2 * p):
  22.                 if multiple % 2 == 1:
  23.                     is_prime[(multiple - 3) / 2] = 0
  24.  
  25.     return primes.size()
  26.  
  27. func _ready():
  28.     var start_time = Time.get_ticks_usec()
  29.     var limit:int = 25000
  30.     optimized_sieve_of_eratosthenes(limit)
  31.     var end_time = Time.get_ticks_usec()
  32.     print(end_time-start_time, " microseconds elapsed")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement