123456789101112131415161718192021222324252627282930313233343536373839404142434445 |
- const isPrime = (number) => {
- if (number % 2 === 0 && number > 2) {
- return false
- }
- let start = 2
- const limit = Math.sqrt(number)
- while (start <= limit) {
- if (number % start++ < 1) {
- return false
- }
- }
- return number > 1
- }
- addEventListener('message', (e) => {
- const { startTime } = e.data
- let n = 0
- let total = 0
- const THRESHOLD = e.data.value
- const primes = []
- let previous = startTime
- while (++n <= THRESHOLD) {
- if (isPrime(n)) {
- primes.push(n)
- total++
- const now = Date.now()
- if (now - previous > 250) {
- previous = now
- postMessage({
- status: 'calculating',
- count: total,
- time: Date.now() - startTime
- })
- }
- }
- }
- postMessage({ status: 'done', count: total, time: Date.now() - startTime })
- })
|