| Download
Play around with sieves and benchmarking...
Project: 🧮 JSage: wasm - sagemath - zig
Views: 276Image: ubuntu2004
/*1emcc -O3 sieve.c -s EXPORTED_FUNCTIONS='["_pi"]' -s2EXPORTED_RUNTIME_METHODS='["ccall","cwrap"]'34Then:56> pi2 = require('./a.out.js').cwrap('pi', 'number', ['number']); {pi} =7require('./sieve.js') > t = new Date(); for(i=0;i<10;i++){pi2(1000000+i);} new8Date() - t; 71 > t = new Date(); for(i=0;i<10;i++){pi(1000000+i);} new Date() -9t; 55910*/1112#include <stdio.h>13#include <malloc.h>1415int pi(int number) {16int i, j;1718int* primes = (int*)malloc(sizeof(int) * (number + 1));1920for (i = 2; i <= number; i++) primes[i] = i;2122i = 2;23while ((i * i) <= number) {24if (primes[i] != 0) {25for (j = 2; j < number; j++) {26if (primes[i] * j > number)27break;28else29// Instead of deleting , making elements 030primes[primes[i] * j] = 0;31}32}33i++;34}3536int cnt = 0;37for (i = 2; i <= number; i++) {38// If number is not 0 then it is prime39if (primes[i] != 0) {40cnt += 1;41}42}4344free(primes);4546return cnt;47}4849int main() {50int j = 0;51for (int i = 0; i < 100; i++) {52j += pi(3 * 1000000);53printf('%d\n', j);54fflush(stdout);55}56printf("%d\n", j);57}585960