Hola a todos, estoy creando un algoritmo que permita asignar a la diagonal de una matriz cuadrada la sgte serie de números primos...

|2 0 0 0 |
|0 3 0 0 |
|0 0 5 0 |
|0 0 0 7 ..|

Y esto tengo, pero al ejecutarlo me resulta la matriz sólo con 0.
PD: No importa que la matriz no quede como asi como la escribi antes, tengo claro que en el programa saldrá

2
0
0
0
3
0
0
0
5 (Si fuera de 3x3 la matrz)

CLS
'$DYNAMIC
DIM A(1, 1) AS DOUBLE
DIM B(1) AS DOUBLE
INPUT "INGRESE ORDEN DE MATRIZ N"; N
REDIM A(N, N)
REDIM B(N)
I = 2
L = 1
WHILE L < N
Z = Y
J = 2
WHILE J < I
X = I MOD J
IF X = 0 THEN
Z = W
END IF
J = J + 1
WEND
IF Z = Y THEN
I = B(I)
L = L + 1
END IF
I = I + 1
WEND
FOR I = 1 TO N
FOR J = 1 TO N
IF I = J THEN
A(I, J) = B(I)
ELSE
A(I, J) = 0
END IF
NEXT J
NEXT I
FOR I = 1 TO N
FOR J = 1 TO N
PRINT A(I, J)
NEXT J
NEXT I
Cuál es el error?
Gracias a los que puedan ayudar