Números primos en Pascal

Muy buenas, hace un par de meses me pusieron una práctica en mi universidad que trataba sobre hallar los primeros n numeros primos. Tenía habilitado Mooshak para ver si el código era eficiente y correcto pero ya ha cerrado el plazo. Aquí os dejo el código y si a alguien no le supone mucho trabajo darme algún consejo le estaría muy agradecido. Un saludo¡

 PROGRAM primos;    CONST   MAX=1000;     TYPE   TTachados=ARRAY[0..MAX] OF boolean;   VAR   tachados:TTachados;     PROCEDURE primo(VAR tachados:Ttachados);   VAR   n,contar,numero,i,j:integer;   r:real;   BEGIN       FOR i:=1 TO MAX DO       tachados[i]:=FALSE;   readln(n);   numero:=0;   j:=2;       REPEAT j:=j+2;     {Tachamos los múltiplos de dos}       tachados[j]:=TRUE;       UNTIL j> MAX;   j:=3;       REPEAT j:=j+3;    {Tachamos los múltiplos de tres}       tachados[j]:=TRUE;       UNTIL j> max;     i:=1;   contar:=0;       REPEAT i:=i+1;       IF (tachados[i]=FALSE) THEN  {Escribimos los números que son primos mayores que 1}       BEGIN        writeln(i);        contar:=contar+1;       END;       UNTIL contar=n;   readln();     END;     BEGIN          primo(tachados);                              readln();      END 

Перевести с Pascal на VBA

Var a:array[1..3,1..2]of real; b:array[1..3]of real; //массив для координат пересечения сторон с ОХ i,j,z:integer; // (y1-y2)x+(x2-x1)y+(x1y2-x2y1)=0 - ур-е прямой, прохоходящей через 2     точки // тогда x=(x2y1-x1y2)/(y1-y2) - координата ее пересечения с осью х   // найдем координаты пересечения сторон с осью х function cross(x1,x2,y1,y2:real):real; begin result:=(x2*y1-x1*y2)/(y1-y2); if ((result>x1) and (result>x2)) or ((result<x1) and (result<x2)) then result:=1  //это точка пересечения не самой стороны, а ее продолжения //поскольку в дальнейшем нам нужны будут знаки координат,            //ей приписываем положительной значение, чтобы она не влияла //на конечный результат end; begin for i:=1 to 3 do begin writeln('Введите координаты х,у вершины:'); readln(a[i,1],a[i,2]); end; z:=1; for i:=1 to 3 do begin j:=i+1; if j>3 then j:=1; b[i]:=cross(a[i,1],a[j,1],a[i,2],a[j,2]); z:=sign(b[i])*z; end; write('Начало координат '); if z<0 then writeln('принадлежит треугольнику') else writeln('не принадлежит треугольнику'); end. 

Помогите, пожалуйста, перевести код с Pascal на Java


var a:array[1..10] of integer; N,i:Integer; begin Write(‘N:’); Readln(N); for i:=1 to N do begin write(i,’ :’); readln(a[i]); end; i:=1; While (i<=(N div 2)+1) do begin writeln(i,’ : ‘,a[i]); if i<=N div 2 then writeln(i+1,’ : ‘,a[i+1]); if N-i>(N div 2) then writeln(N-i+1,’ : ‘,a[N-i+1]); if N-i-1>(N div 2) then writeln(N-i,’ : ‘,a[N-i]); inc(i,2); end; end.

Digitos leidos y suma de esos digitos en PASCAL

Tengo este problemita:
Realizar un módulo que reciba como parámetro un número entero y retorne la cantidad de dígitos que posee y la suma de los mismos. a. Utilizando el módulo anterior, realizar un programa que lea una secuencia de números e imprima la cantidad total de dígitos leídos. La lectura finaliza al leer un número cuyos dígitos suman exactamente 10, el cual debe procesarse.

Lo tengo resuelto así:

program eje10p3; var cont,dig,suma:integer; procedure leerentero(var entero:integer); begin      cont:=1;         read(entero); while (entero div 10 <> 0) do begin     cont:=cont+1;     if entero <> 0 then     begin         dig:=entero mod 10;         entero:=entero div 10;         suma:=suma+dig;     end; end; read(entero); end; var entero:integer; begin suma:=0; leerentero(entero); writeln ('la cantidad de digitos es ',CONT); writeln ('la suma de digitos es ',suma); end.

Pero no funciona, y no me doy cuenta porque no funciona, ya he probado varias cosas y sigue sin funcionar.

Pascal triangle with root != 2

I find method to build pascal triangle for all natural root. Like this:

             1            1 1 1           1 2 3 2 1         1 3 6 7 6 3 1     1 4 10 16 19 16 10 4 1  1 5 15 30 45 51 45 30 15 5 1 

or

                                1                             1 1 1 1 1 1                        1 2 3 4 5 6 5 4 3 2 1              1 3 6 10 15 21 25 27 27 25 21 15 10 6 3 1  1 4 10 20 35 56 80 104 125 140 146 140 125 104 80 56 35 20 10 4 1 

(triangles with root 3 and 6)

I don’t know, could possible someone find it before me, if it’s true please give me know. I can show my algorithm.

English isn’t my native language. Thanks.

algoritmo em pascal com erro de execução

Fiz esse algoritmo mas ele não executo, aparece um erro, “else não esperado”: Program valormaior_oumenor ; var valornicial, valorfinal:integer; Begin writeln(‘Digite um valor ‘); read(valorinicial); writeln(‘Digite outro valor ‘); read(valorfinal); if (valorinicial>valorfinal) then while (valorinicial>=valorfinal) do writeln(‘valorinicial’) valorinicial:=valorinicial+1 else while (valorinicial<=valorfinnal) do writeln(valorfinal) valorfinal:=valorinicial-1

End.