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).

Dialeto: VisuAlg para mod contador se / senao

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

Executar no editor online

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();

Outros exemplos de Portugol