Exemplo para verificar se um inteiro (inserido pelo usuário) é um número primo ou não usando o loop for e a instrução if… else.
Para entender este exemplo, você deve ter conhecimento dos seguintes tópicos de programação C ++:
- C ++ if, if … else e aninhado if … else
- C ++ para Loop
- Instrução C ++ break and continue
Um número inteiro positivo que só é divisível por 1 e é conhecido como número primo.
Por exemplo: 13 é um número primo porque só é divisível por 1 e 13, mas 15 não é um número primo porque é divisível por 1, 3, 5 e 15.
Nota: 0 e 1 não são números primos.
Exemplo: verificar o número principal
#include using namespace std; int main() ( int i, n; bool isPrime = true; cout <> n; // 0 and 1 are not prime numbers if (n == 0 || n == 1) ( isPrime = false; ) else ( for (i = 2; i <= n / 2; ++i) ( if (n % i == 0) ( isPrime = false; break; ) ) ) if (isPrime) cout << n << " is a prime number"; else cout << n << " is not a prime number"; return 0; )
Resultado
Insira um número inteiro positivo: 29 29 é um número primo.
Este programa pega um número inteiro positivo do usuário e o armazena na variável n.
Observe que a variável booleana isPrime é inicializada true
no início do programa.
Como 0 e 1 não são números primos, primeiro verificamos se o número de entrada é um desses números ou não. Se o número de entrada for 0 ou 1 , o valor de isPrime será definido como false
.
Caso contrário, o valor inicial de isPrime é deixado inalterado e o for
loop é executado, que verifica se o número inserido pelo usuário é perfeitamente divisível por i ou não.
for (i = 2; i <= n / 2; ++i) ( if (n % i == 0) ( isPrime = false; break; ) )
O for
loop vai de i == 2
a i <= n / 2
e aumenta o valor de i em 1 a cada iteração.
O loop termina em i == n / 2
porque não podemos encontrar nenhum fator para n além do número n / 2
. Portanto, qualquer iteração além n / 2
é redundante.
Se o número inserido pelo usuário for perfeitamente divisível por i, isPrime será definido como false
e o número não será um número primo.
Mas se o número de entrada não for perfeitamente divisível por i em todo o loop, isso significa que o número de entrada só é divisível por 1 e esse próprio número.
Portanto, o número fornecido é um número primo.
No caso de n == 2
, o for
loop falha ao executar e o valor de isPrime permanece true
.