Merge pull request #697 from MathBunny/master

Fix bignumber isPrime implementation to use bignumber methods
This commit is contained in:
Jos de Jong 2016-08-01 21:10:41 +02:00 committed by GitHub
commit ff53b04dca

View File

@ -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;
}
}