Programa C ++ para verificar se um número é principal ou não

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 trueno 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 forloop é 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 forloop vai de i == 2a i <= n / 2e aumenta o valor de i em 1 a cada iteração.

O loop termina em i == n / 2porque 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 falsee 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 forloop falha ao executar e o valor de isPrime permanece true.

Artigos interessantes...