Verificar número primo em C e C++
Nesta lição, você vai verificar se um inteiro é primo testando divisores até a sua raiz quadrada.
Introdução
Um número primo é maior que 1 e só é divisível por 1 e por ele mesmo. Para testar, dividimos o número pelos valores menores que ele. Mas basta testar até a raiz quadrada do número, o que deixa o programa muito mais rápido.
Pontos importantes
- Ative os avisos do compilador (compiler warnings) e corrija todos eles.
- Entenda o tipo de dado e o tempo de vida (lifetime) de cada valor.
- Sempre valide os dados de entrada e os limites dos índices de arrays.
Exemplos de código C e C++
#include <stdio.h>
int main(void) {
int number = 29, prime = number > 1;
// A composite number has a factor no larger than its square root.
for (int divisor = 2; divisor * divisor <= number; ++divisor)
if (number % divisor == 0) { prime = 0; break; }
printf("%d is %sprime\n", number, prime ? "" : "not ");
}
29 is prime
#include <iostream>
int main() {
int number = 29;
bool prime = number > 1;
// Stop after the square root and on the first divisor.
for (int divisor = 2; divisor * divisor <= number && prime; ++divisor)
prime = number % divisor != 0;
std::cout << number << " is " << (prime ? "" : "not ") << "prime\n";
}
29 is prime
Comparação entre C e C++
O laço só continua enquanto divisor * divisor <= number, porque, se o número tiver um divisor maior que a raiz quadrada, ele vem acompanhado de um divisor menor que já foi testado. Assim que encontra um divisor, a versão em C sai do laço com break, e a versão em C++ para graças à condição && prime. O resultado mostra que 29 é primo.
C usa funções procedurais pequenas e deixa à vista como os dados ficam na memória.
C++ continua permitindo trabalhar em baixo nível, mas acrescenta tipos da biblioteca e abstrações mais seguras.
Exercícios práticos
Execute as duas versões e depois mude o código para observar a diferença de segurança que cada linguagem oferece.
- Teste entradas inválidas e valores nos limites.
- Compile com as flags -Wall -Wextra -Wpedantic para ativar mais avisos.
- Separe as declarações compartilhadas em um arquivo de cabeçalho e a implementação em outro arquivo.
Pratique com um desafio
Use o conteúdo desta lição para resolver um problema real. Cada desafio roda no navegador, com testes instantâneos e uma revisão por IA.
- Verificação de Número Primo Decida se um número é primo. Fácil
- Liste Primos com um Crivo Encontre números primos até um limite marcando múltiplos compostos. Médio