Edit in JSFiddle

```function Sieve(m) { // Sieve2.js: m>=3

var h= 1 + Math.floor((m-3)/2)
var crible = []; // sv=new Array(h)
var p=3;

for (var i=0; i<m; i++){
crible[i]=true;
\$("#" + (i + 1)).attr("class", "prime");
}
\$("#1").attr("class", "composed");// 1 n'est pas un nombre premier
crible[1] = false;

// premier cas "2"
var multiple = 2 * 2;

while(multiple <= m){
crible[multiple] = false;
\$("#" + multiple).attr("class", "composed");
multiple += 2;
}

for(var potential_prime=3; potential_prime < m; potential_prime++){
if(!crible[potential_prime]){//ce n'est pas un nombre premier
continue
}

var multiple = potential_prime * 2;
while(multiple <= m){
crible[multiple] = false;
\$("#" + multiple).attr("class", "composed").delay(500);
multiple += potential_prime;
}
}
}
function initTab(m){
var i = 0;
while(i*i < m ){
i += 1;
}
for(var r=0; r<i; r++){
var row = \$("<tr/>");
for(var c=0; c < i; c++){
if(1 + c + r * i > m){
continue; // pour éviter d'ajouter des nombres pas utiles
}
var col = \$("<td/>").attr("id", 1 + c + r * i).text(1 + c + r * i).appendTo(row);
}
row.appendTo(\$("#tbody"));
}
}
\$("#ok").click(function(){
\$("#tbody").children().each(function(){\$(this).remove();});
if(\$("#maxnum").val()){
initTab(\$("#maxnum").val());
Sieve(\$("#maxnum").val());
}
});
\$("#explanation").text("Entrez le nombre maximal traité par le crible.");
```
```<input type="number" max="10000" name="max_num" id="maxnum"/>
<button type="button" id="ok">
Calculer
</button>
<p id="explanation">

</p>
<table>
<tbody id="tbody">

</tbody>
</table>```
```.prime{
background-color:green;
color: white;
}
.composed{
background-color:#FB0000;
}
```