Error en programa hecho para practicar

Error en programa hecho para practicar

de Ezequiel Rodriguez Pilatti -
Número de respuestas: 2
realize un programa principal esPrimo
#include <stdio.h>
#include <math.h>

int main()
{printf("Ingrese su numero: ");
    int num=scanf("%d/n", num);
    int lim=sqrt(num);
    bool Primo=((num%2!=0) || (num==2));
    int cont=3;
    while ((!Primo) && (cont<=lim));{
        Primo=(num%cont)!=0;
        cont+=2;
    }
    if (Primo) {printf("El numero %d es Primo/n");}
        else {printf("El numero %d no es Primo/n");}
return 0;
}
traduciendo a C a mano un codigo escrito en Pascal
Program esPrimo;
VAR
    num,lim,cont:Integer;
    Primo:Boolean;
begin
    Write('Ingrese su numero: ');
    readln(num);
    lim:=trunc(sqrt(num));
    Primo:=((num mod 2)<>0) or (num=2);
    Cont:=3;
    While not(Primo) and (cont<=lim) do begin
        Primo:=(num mod cont)<>0;
        cont:=cont+2;
    end;
    if Primo then writeln('El numero ',num:0,' es Primo')
    else writeln('El numero ',num:0,' no es Primo');
end.
sin embargo cuando lo ejecuto recibo el error Violación de segmento (`core' generado);
me podrian decir por que?
En respuesta a Ezequiel Rodriguez Pilatti

Re: Error en programa hecho para practicar

de Fabricio Sebastian Correa Caceres -

Hola Ezequiel, un problema que pude identificar es que al usar scanf no se debe hacer una asignación a la variable en la que queremos guardar lo leído, sino que hay que pasarle al procedimiento scanf la dirección donde querés guardar lo leído (en este caso sería &num)

En respuesta a Ezequiel Rodriguez Pilatti

Re: Error en programa hecho para practicar

de Fernando Fernandez -
Hola Ezequiel.
Está bien lo que dice Fabricio.

Además, ¿cómo estás compilando? Porque en los printf se requiere un parámetro por cada especificador de formato (los %d). Deben ser expresiones del tipo adecuado. En este caso supongo que sería 'num'.

Otro problema es el punto y coma en la línea del while. Eso hace que el bloque del while quede vacío (no hace nada) y me parece que se colgaría con cualquier número par mayor que 8 (un número par cuya raíz cuadrada sea mayor que 3).

Removido ese punto y coma me parece que la lógica de ese código haría que consisdere primo a cualquier número impar. ¿Puede ser?