Problema con Pascal

MathLover22

Nuovo Utente
2
0
Salve ho creato un programma in grado di dirti se un numero è primo o meno e ha funzionato. Poi ho deciso di arricchirlo in modo che ti dica anche se si tratti di un primo di Mersenne esprimibile in questo modo:
n=2^p-1
Ma mi da il seguente errore:
47 / 5 primi.pas
Fatal: Syntax error, UNTIL expected but const char found
Codice:
program PRIMI;
var A,B,C,D,E,F,G:integer;
begin
writeln('Inserisci A');
readln(A);
A:=D;
if A=1
then
begin
writeln(A,'non e` primo');
readln;
end
else
begin
if A=2
then
begin
writeln(A,'e` primo');
readln;
end
else
begin
repeat
B:=D-1;
C:=A mod B;
D:=D-1;
if C=0
then
begin
writeln(A,'non e` primo');
readln;
D:=2;
E:=2
end;
until D=2;
if E<>2
then
begin
writeln(A, 'e` primo');
readln;
F:=A+1 mod 2;
end;
if F=0
then
begin
repeat
G:=2^F-1;
F:=F+1;
until(G=A)or(F=30);
end;
if G=A;
then
begin
writeln(A, 'è un primo di Mersenne');
readln;
end;
end;
end;
end;

Dov'è l'errore? :grat:
 
Ultima modifica da un moderatore:
M

Mursey

Ospite
Sei il benvenuto se usi il tag CODE, lo metto io per questa volta ;)

- - - Updated - - -

OR va maiuscolo nella condizione
 
M

Mursey

Ospite
Sono un po' arrugginito di Pascal, prova testando le singole condizioni per capire quale non gli piace, penso G=A
 

BAT

Moderatore
Staff Forum
Utente Èlite
22,944
11,580
CPU
1-Neurone
Dissipatore
Ventaglio
RAM
Scarsa
Net
Segnali di fumo
OS
Windows 10000 BUG
Il Pascal non me lo ricordo ma mi sembra che ci siano errori logici già all'inizio:
prima leggi A e poi gli assegni direttamente D, non ha senso;
tra l'altro D è appena stata dichiarata (ma non inizializzata) per cui in teoria il valore è indefinito.

Ma sei sicuro che per elevare a potenza puoi usare ^ (accento circonflesso)?
Non mi pare proprio che si faccia così
 
  • Mi piace
Reazioni: Mursey
U

Utente 16812

Ospite
Il Pascal non me lo ricordo ma mi sembra che ci siano errori logici già all'inizio:
prima leggi A e poi gli assegni direttamente D, non ha senso;
tra l'altro D è appena stata dichiarata (ma non inizializzata) per cui in teoria il valore è indefinito.

Ma sei sicuro che per elevare a potenza puoi usare ^ (accento circonflesso)?
Non mi pare proprio che si faccia così

Infatti l'accento circonflesso ^ è l'indicatore del puntatore utilizzato nelle strutture dinamiche semplici e complesse, per l'elevamento a potenza del tipo x^y (x elevato alla y) si deve fare EXP(LN(x)*y), non essendo contemplata una apposita funzione matematica (SQR(x) serve solo per il quadrato di x) :asd:

P.S. Poi nel sorgente di @MathLover22 ci sono altri errori come ad es. nelle istruzioni di assegnazione che, ricordo, il processore valuta da destra verso sinistra; in questo modo viene eliminato qualsiasi tipo di ambiguità in quelle istruzioni in cui è presente la stessa variabile (ad es. usata come contatore) :sisilui:
 
Ultima modifica da un moderatore:
  • Mi piace
Reazioni: Mursey

Entra

oppure Accedi utilizzando
Discord Ufficiale Entra ora!

Discussioni Simili