createPrimeNumberSequence()
Last updated October 17, 2014
Version: 1 | Requires: CF10 | Library: CFMLLib
Description:
Each call to the function returned from createPrimeNumberSequence() returns the next prime number.
Return Values:
Returns a function which when called returns the next prime number
Example:
component extends="testbox.system.BaseSpec" {
function beforeAll(){
include "udfs/createPrimeNumberSequence.cfm";
}
function run(){
describe("Tests for createPrimeNumberSequence()", function(){
it("returns primes", function(){
var primeSequence = createPrimeNumberSequence();
var primes = [];
for (var i=1; i++ <= 10;){
primes.append(primeSequence());
}
expect(
primes
).toBe([2,3,5,7,11,13,17,19,23,29]);
});
});
}
}
Parameters:
No arguments.
Full UDF Source:
/**
* Creates a "generator" for returning prime numbers, in sequence
*
* @return Returns a function which when called returns the next prime number
* @author Adam Cameron (dac.cfml@gmail.com)
* @version 1.1, October 17, 2014
*/
function createPrimeNumberSequence(){
var primes = [2]
var potential = 1
return function(){
while (true) {
potential += 2
var upperThresholdToCheck = sqr(potential)
var potentialIsPrime = true
for (var prime in primes){
request.called++
if (potential mod prime == 0) {
potentialIsPrime = false
break;
}
if (prime > upperThresholdToCheck) break;
}
if (potentialIsPrime) {
primes.append(potential)
return primes[primes.len()-1]
}
}
}
}
Search CFLib.org
Latest Additions
Raymond Camden added
QueryDeleteRows
November 04, 2017
Leigh added
nullPad
May 11, 2016
Raymond Camden added
stripHTML
May 10, 2016
Kevin Cotton added
date2ExcelDate
May 05, 2016
Raymond Camden added
CapFirst
April 25, 2016