Skip to content

Instantly share code, notes, and snippets.

@Woodsphreaker
Created March 14, 2017 14:35
Show Gist options
  • Save Woodsphreaker/e81e068caee110e821c4c9b375a76ddd to your computer and use it in GitHub Desktop.
Save Woodsphreaker/e81e068caee110e821c4c9b375a76ddd to your computer and use it in GitHub Desktop.
Dado um número aleatório, retornar todos os números PRIMOS entre 0 e o número escolhido
"use strict";
const divisors = [1, 2, 3, 4, 5, 6, 7, 8, 9];
const max = Math.max.apply(null, divisors);
const base = (num) => num > max ? [].concat(divisors, num) : divisors;
const numbers = (num) => [...Array(num).keys()];
const numberTest = (num) => base(num).map((_a) => num % _a === 0).filter(_a => _a === true);
const prime = (num) => numbers(num).filter(_a => numberTest(_a).length === 2);
console.log(prime(100)); // [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
@suissa
Copy link

suissa commented Mar 19, 2017

Em ES6:

const sieveOfEratosthenes = ( n ) => {
    var upperBound = Math.sqrt( n )
    var primeNumbers = [ ...Array(n + 1).keys() ]

    for ( let i = 2; i < upperBound; i++ ) {
        for ( let j = i * 2; j <= n; j += i ) {
            delete primeNumbers[ j ]
        }
    }

    return Object.keys( primeNumbers ).splice( 2 ) .map( x => parseInt( x ) )
}

@akinncar
Copy link

var primos = [];
var gravado = [];
var number = 50; // número desejado aqui

primos.push(1);

for(var i = 0; i < number + 1; i++){
    gravado = [];
    for(var j = 1; j <= i; j++){
        i % j == 0 ? gravado.push(j) : total = 1;
    }
    gravado.length == 2 ? primos.push(i) : total = 1;
}

console.log(primos);

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment