Ir ao conteúdo
  • Cadastre-se

Números primos em c++.


rafael.kbeca

Posts recomendados

Boa tarde..

Bom, eu fiz um programinha que verifica se o número inserido é primo ou não, não estava dando certo ae pesquise e fiz, deu certo mais nao entendi muito bem.

Gostari que alguem me explicasse..


#include <cstdlib>
#include <iostream>

using namespace std;

int main()
{
int n,m,x;

cout<<"Insira um numero: ";
cin>>n;
x=n-1;
while(m!=0 && x>0){
m=n%x;
x--;
}

if(x==0)
{
cout<<"Esse numero é primo\n";
}else{
cout<<"Esse numero nao é primo\n";
}
system("PAUSE");
return 0;
}

Bom a variavel (m) esta recebendo o resultado do numero inserido dividido por todos os outros menores, até ae beleza.

mais o (if) a comparação nao teria q ser o m q esta recebendo o resultado?

porque esta fazendo a conparação na variavel ( x )?

ela nao vai dar sempre 0 ? nesse caso ela é só uma contadora do while só vai parar quando ela for 0..

bom, tenho que enterder isso, pois o verdadeiro programa é diferenciar se um numero inserido é piramidal o não.. rssss..

agradeço dez de já...

Link para o comentário
Compartilhar em outros sites

Um número primo só é divisível por ele mesmo e por 1.

Pra saber se um número é divisível por outro, o código tá pegando o resto da divisão e vendo se é zero. Se for zero é porque é divisível.

No caso do 5... que é um número primo:

n = 5

x = n - 1 = 4

//while1

m != 0 ? sim

x > 0 ? sim

m = 5 % 4 = 1 // se sobrou 1 é porque não é divisível

x = 3

//while2

m != 0 ? sim // m = 1

x > 0 ? sim // x = 3

m = 5 % 3 = 2 // resto da divisao foi 2, não é divisível

x = 2

//while3

m != 0 ? sim // m = 2

x > 0 ? sim // x = 2

m = 5 % 2 = 1 // mais uma vez, resto diferente de 0, não é divisível

x = 1

//while4

m != 0 ? sim // m = 1

x > 0 ? sim // x = 1

m = 5 % 1 = 0 // é divisível por 1

x = 0

//while5

m != 0 ? não // sai do while

Quando ele sai do while, o x tá com valor 0... se o x teve que ir até o 0 pra sair do loop, significa que nenhum número antes de 1 era divisível por n... ou seja, n só era divisível por ele mesmo e por 1... então o número era primo.

No caso de um número como 4, por exemplo, ia acontecer isso:

//while2

m != 0 ? sim

x > 0 ? sim

m = 4 % 2 = 0 // 4 é divisível por 2

x = 1

//while3

m != 0 ? não // sai do loop

x ia ser igual a 1 e não ia entrar no if no final.

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!