Verificar número primo em Portugol (VisuAlg)
Um número primo tem exatamente dois divisores: 1 e ele mesmo. O algoritmo testa todos os valores de 1 até n e conta quantos dividem n sem deixar resto (n mod i = 0).
É uma solução didática; versões mais rápidas testam só até a raiz quadrada de n (função raizq).
Código em Portugol
algoritmo "numero_primo"
var
n, i, divisores: inteiro
inicio
escreva("Digite um número inteiro: ")
leia(n)
divisores <- 0
para i de 1 ate n faca
se n mod i = 0 entao
divisores <- divisores + 1
fimse
fimpara
se divisores = 2 entao
escreval(n, " é primo")
senao
escreval(n, " não é primo")
fimse
fimalgoritmo
Saída do programa
Digitando 17 quando o programa pede:
Digite um número inteiro: 17
17 é primo
Tradução para outras linguagens
O editor traduz qualquer programa em Portugol para C, Java e JavaScript. Veja como fica este exemplo:
O mesmo programa em C
// Algoritmo "numero_primo" — traduzido do Portugol para C.
// Para compilar: gcc programa.c -o programa
#include <stdio.h>
int main(void) {
int n = 0;
int i = 0;
int divisores = 0;
printf("Digite um número inteiro: ");
scanf("%d", &n);
divisores = 0;
for (i = 1; i <= n; i++) {
if (n % i == 0) {
divisores++;
}
}
if (divisores == 2) {
printf("%d é primo\n", n);
} else {
printf("%d não é primo\n", n);
}
return 0;
}
O mesmo programa em Java
// Algoritmo "numero_primo" — traduzido do Portugol para Java.
// Salve como Main.java e execute: java Main.java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);
int n = 0;
int i = 0;
int divisores = 0;
System.out.print("Digite um número inteiro: ");
n = Integer.parseInt(entrada.nextLine().trim());
divisores = 0;
for (i = 1; i <= n; i++) {
if (n % i == 0) {
divisores++;
}
}
if (divisores == 2) {
System.out.println(n + " é primo");
} else {
System.out.println(n + " não é primo");
}
}
}
O mesmo programa em JavaScript
// Algoritmo "numero_primo" — traduzido do Portugol para JavaScript.
// Para executar (Node.js): node programa.js
const readline = require('node:readline');
// Lê uma linha digitada no teclado.
const teclado = readline.createInterface({ input: process.stdin });
const linhas = teclado[Symbol.asyncIterator]();
async function leia() {
const linha = await linhas.next();
return linha.done ? '' : linha.value;
}
async function main() {
let n = 0;
let i = 0;
let divisores = 0;
process.stdout.write("Digite um número inteiro: ");
n = parseInt(await leia(), 10);
divisores = 0;
for (i = 1; i <= n; i++) {
if (n % i === 0) {
divisores++;
}
}
if (divisores === 2) {
console.log(`${n} é primo`);
} else {
console.log(`${n} não é primo`);
}
teclado.close();
}
main();