Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- extends Node
- func optimized_sieve_of_eratosthenes(limit: int) -> int:
- if limit < 2:
- return PackedInt32Array().size()
- var primes := PackedInt32Array()
- if limit >= 2:
- primes.append(2)
- var sieve_size:int = (limit / 2) - 1 + (limit % 2)
- var is_prime := PackedByteArray()
- for i:int in range(sieve_size + 1):
- is_prime.append(1)
- for i:int in range(sieve_size + 1):
- if is_prime[i]:
- var p:int = 2 * i + 3
- primes.append(p)
- for multiple:int in range(p * p, limit + 1, 2 * p):
- if multiple % 2 == 1:
- is_prime[(multiple - 3) / 2] = 0
- return primes.size()
- func _ready():
- var start_time = Time.get_ticks_usec()
- var limit:int = 25000
- optimized_sieve_of_eratosthenes(limit)
- var end_time = Time.get_ticks_usec()
- print(end_time-start_time, " microseconds elapsed")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement