var prime = new Array(2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,57,61,67) ;

function primeFactorizationProblem() {
    this.data = new List() ;
    this.reference = new Number() ;
    reference = 0 ;
}

primeFactorizationProblem.prototype.assign = function(x) {
    this.reference = x ;

}

primeFactorizationProblem.prototype.evaluate = function() {

    var str       = new String() ;
    var remainder = new Number() ;
    var status = true ;

    str       = "" ;
    
    if ( String(this.reference) == null) {
       alert( "No reference number assigned.") ;
       status = false ;            
    } else {
        for (remainder = this.reference ; (remainder > 1); ) {
            for( i = 0 ; i < 19; i++) {
                if (parseInt(remainder) % parseInt(prime[i]) == 0 ) {
                    if (str.length > 0) {
                        str += "," ;
                    }
                    str += String(prime[i]) ;
                   remainder = parseInt(remainder)/parseInt(prime[i]) ;
                    break ; 
                }
            }
            if (i > 18) {
                str += "," + remainder ;
                break ;
            }
        }
    }
    if (status != false) {
       (this.data).assign(str) ;
    }
    return str ;
}

primeFactorizationProblem.prototype.primeFactoring = function() {
    var str = new String() ;

    str = "" ;
    for ( ; this.data.eof() == false ; ) {
        if (str.length > 0) {
            str += " x " ;
	}
        str += this.data.iterate() ;
    }
    return  str ;
}

primeFactorizationProblem.prototype.primeFactors = function() {
    return (this.data.listArray) ;
}

