Eu vi esta idéia em java e passei pra português estruturado pra ficar melhor pra vc:
algoritmo "semnome"
// Função :
// Autor :
// Data : 5/7/2015
// Seção de Declarações
var
cont,i,num:inteiro
inicio
// Seção de Comandos
cont<-0
leia(num)
para i de 1 ate num faca
se num%i=0 então
cont<-cont+1
fimse
fimpara
se cont>2 então
escreval(num," não é primo.")
senao
escreval(num," é primo.")
fimse
fimalgoritmo
Ele conta quantas vezes um numero é dividido (cont). todo numero é divisivel por 1 e por ele mesmo, ou seja, ao final do loop 'para' cont vai estar com, no mínimo, o valor 2. Se o numero ao longo do loop for dividido mais de duas vezes, então ele não é primo, uma vez que os números primos só são divisiveis por 1 e por ele mesmo (2 vezes). :)