diff --git a/lib/function/utils/isPrime.js b/lib/function/utils/isPrime.js index 3cf4c082a..155390910 100644 --- a/lib/function/utils/isPrime.js +++ b/lib/function/utils/isPrime.js @@ -1,7 +1,9 @@ 'use strict'; -var deepMap = require('../../utils/collection/deepMap'); -var number = require('../../utils/number'); +var deepMap = require('../../utils/collection/deepMap'), + number = require('../../utils/number'), + map = require('../../../index'); + function factory (type, config, load, typed) { /** @@ -35,7 +37,7 @@ function factory (type, config, load, typed) { var isPrime = typed('isPrime', { 'number': function (x) { if (x < 2){ - return false + return false; } if (x == 2){ return true; @@ -53,17 +55,17 @@ function factory (type, config, load, typed) { // FIXME: use BigNumber methods instead of implicitely converting to number 'BigNumber': function (x) { - if (x < 2){ - return false - } - if (x == 2){ - return true; - } - if (x % 2 == 0){ + if (x.lt(2)){ return false; } - for (var i = 3; i * i <= x; i += 2){ - if (x % i == 0){ + if (x.equals(2)){ + return true; + } + if (x.mod(2).isZero()){ + return false; + } + for(var i = type.BigNumber(3); i.times(i).lte(x); i = i.plus(1)){ + if (x.mod(i).isZero()){ return false; } }