12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- // Copyright 2019-2024 Tauri Programme within The Commons Conservancy
- // SPDX-License-Identifier: Apache-2.0
- // SPDX-License-Identifier: MIT
- 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 })
- })
|