下のプログラムは、エラトステネスの篩のアルゴリズムの一部です。
何をやっているか理解出来ないので、解説をお願いします。

for(i=0 ; i<MAX ; i++) p[i] = 0;
p[0] = 1;
for(i=2 ; i<=MAX/2 ; i++){
for(j=2 ; i*j<=MAX ; j++){
if(p[i*j-1] == 0)
p[i*j-1] = 1;



if(p[i*j-1] == 0)
p[i*j-1] = 1;

この処理は、p[i*j-1]が0ならば p[i*j-1] に1を代入
だと思うのですが、p[1]からp[MAX]まで0を入れてあるので、このif文は常に真になりませんか?