Else If 的 Pascal 问题

Pascal issue with Else If

PROGRAM FactorPrimo(input,output);
VAR
    numero : integer;
    factor : integer;
    resto : integer;
    primo : integer;
    multiplicidad : boolean;

BEGIN
    write('Ingrese numero: ');
    readln(numero);
    factor := 2;
    primo := 0;
    multiplicidad := false;
    IF numero > 1 THEN
    BEGIN
        REPEAT
        BEGIN
            resto := numero MOD factor;
            IF resto = 0 THEN
            BEGIN
                numero := numero DIV factor;
                primo := primo + 1;
                multiplicidad := true;
            END
            ELSE IF multiplicidad = true THEN
                IF primo > 1 THEN
                writeln(factor,'^',primo);
                multiplicidad := false;
                ELSE
                writeln(factor);
                multiplicidad := false;
            ELSE
            factor := factor + 1;
            primo := 0;
            END;
        UNTIL numero = 1;
        writeln(factor);
    END
    ELSE 
        write('Debe ingresar un numero mayor a 1');
END.

我不知道为什么程序不会进入 IF PRIMO > 1 then 它总是转到下面的 ELSE 语句。我做错了什么吗?我已经在 java 完成了并且工作正常。

工作正常它应该说:

factor^primo

但是显示的只有:

factor

它应该从 if 到 else if 并尝试 else。但是它现在所做的是从 if 到 else 再到 else if。

一个例子,数字 360 应该是:

2^3
3^2
5

但是现在显示的是:

2
3
5

我认为这是因为它总是以 primo = 0 结尾,我不知道如何解决这个问题。

通过更改 else 中的 primo = 0 if 成功了,现在可以正常工作了。

ELSE IF multiplicidad = true THEN
IF primo > 1 THEN
writeln(factor,'^',primo);
multiplicidad := false;
primo = 0;
ELSE
writeln(factor);
multiplicidad := false;
primo = 0;