calculate factors of a number

by Richard Hunter

HTML

Primes: 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,
<ul id="number-container">

</ul>
<script type="text/template" id="prime-template">
 
        <h2><%=number%></h2>
        <div>
            <p><%=text%></p> 
            <img src ="<%= img %>" /> 
        </div>
 
</script>
<script type="text/template" id="non-prime-template">
 
        <h2><%=number%></h2>
  
</script>

CSS

li {
    border : solid 1px black;
    border-bottom : none;
    list-style : none;
    padding : 12px;
}
li:last-child {
    border-bottom : solid 1px black;
}
img {
    max-width : 100%;
}

JavaScript

var primeMetaData = {

    "7": {

        img: "http://upload.wikimedia.org/wikipedia/en/thumb/4/4c/Les_Demoiselles_d%27Avignon.jpg/350px-Les_Demoiselles_d%27Avignon.jpg",
        text: "1907: Picasso paints Les Demoiselles Avignon"
    },

        "11": {
        img: "http://upload.wikimedia.org/wikipedia/commons/thumb/4/44/Aan_de_Zuidpool_-_p1913-160.jpg/220px-Aan_de_Zuidpool_-_p1913-160.jpg",
        text: "1911: Amundsen reaches South Pole"


    },
        "23": {
        img: "",
        text: "1923: French troops occupy the Ruhr in an attempt to force Germany to pay reparations"
    },
        "29": {

        img: "http://upload.wikimedia.org/wikipedia/commons/c/cc/American_union_bank.gif",
        text: "1929: The year of the Wall St. Crash"
    },

        "37": {

        img: "",
        text: "1937: Spanish Civil War, bombing of Guernica"
    },
        "67": {
        img: "",
        text: "1967: Celtic win the European Cup"
    }


}

function getFactors(subject) {

    var factors = [];
    for (var i = 1; i <= subject; i++) {

        if (subject % i == 0) {

            factors.push(i);
        }
    }
    return factors;
        
}


var primeTemplate = _.template(document.querySelector('#prime-template').innerHTML);
var nonPrimeTemplate = _.template(document.querySelector('#non-prime-template').innerHTML);
var list = document.querySelector("#number-container");

for (var i = 1; i < 50; i++) {

        
    var result = getFactors(i);
    if(result.length==2) {
        //  prime
        
        var metaData = primeMetaData[i.toString()];
        var temp = primeTemplate(_.extend({
            number : i,
            text : "prime",
            img : ""
        }, metaData));
        
        var li = document.createElement('li');
        li.innerHTML = temp;
        
        list.appendChild(li);
    } else {
        var temp = nonPrimeTemplate({
            number : i
        });
        var li = document.createElement('li');
       ...