Trabalho numeros Primos no intervalo

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

Trabalho numeros Primos no intervalo

Mensagem  ricardo em Sab 6 Nov 2010 - 12:50

Código:
echo"#include<iostream>
using namespace std;



void main()
{
   int n1, n2, i,j;
   int cont=0;

   
   cout<<"Vefifique no intevalo quais sao primos\n";
   cout<<"Digite >> "; cin>>n1;
   cout<<"Digite >> "; cin>>n2;

      for(i=n1; i<=n2;i++)
      {
         cont=0;

         for(j=1; j<i;j++)
         {
            if(i%j==0)
               cont++;
         }
         
         if(cont<2)
            cout<<">> "<<i<<" e primo \n";
            
            
      }
      
      
   
}

Nao copie ! faça o seu  !!!!";

ricardo

Mensagens : 2
Data de inscrição : 09/05/2010

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: Trabalho numeros Primos no intervalo

Mensagem  Renancr em Sab 6 Nov 2010 - 17:25

3) Implemente uma função em C++ que receba como argumento dois valores inteiros positivos (x,y) e imprima todos os números primos contidos no intervalo x e y ( Um número natural é um número primo quando ele tem somente dois divisores: o número um e ele mesmo ). Suponha o intervalo 240 e 307 – valores x e y passados para a função. Ao final a função irá imprimir os seguintes números: 241, 251, 257, 263, 269, 271, 277, 281, 283, 293 e 307.

ricardo escreveu:
Código:
echo"#include<iostream>
using namespace std;



void main()
{
   int n1, n2, i,j;
   int cont=0;

   
   cout<<"Vefifique no intevalo quais sao primos\n";
   cout<<"Digite >> "; cin>>n1;
   cout<<"Digite >> "; cin>>n2;

      for(i=n1; i<=n2;i++)
      {
         cont=0;

         for(j=1; j<i;j++)
         {
            if(i%j==0)
               cont++;
         }
         
         if(cont<2)
            cout<<">> "<<i<<" e primo \n";
            
            
      }
      
      
   
}

Nao copie ! faça o seu  !!!!";

Ricardo fiz de uma maneira diferente, adicione mais verificações, e faça só com numeros positivos, sendo que 1 não é primo.

Lembrete: Para verificar se um inteiro negativo é primo, basta lembrar que se um número positivo é primo, então o seu oposto também o será.
Fonte: [Você precisa estar registrado e conectado para ver este link.]

Não Copiem

Código:
#include <iostream>
#include <string>
using namespace std;

void main()
{
   int num1, num2, i, j, swap, cont, cont2;
   char resp;

   do{
      do{
         system("cls");
         cout<< "\tDigite o primeiro valor inteiro.\n\t";
         cin>> num1; // recebe o numero digitado pelo usuáro
         if(num1 < 1) // verifida se o usuário não digitou nem um numero abaixo de 1, se sim exibe a mensagem abaixo.
         {
            system("cls");
            cout<< "\n\nO numero digitado tem que ser maior ou igual a 1\n\n";
            system("pause");
         }
      }while(num1 < 1); // verifida se o usuário não digitou nem um numero abaixo de 1, se sim repete o laço.
      do{
         system("cls");
         cout<< "\tDigite o segundo valor inteiro.\n\t";
         cin>> num2; // recebe o numero digitado pelo usuáro
         if(num2 < 1) // verifida se o usuário não digitou nem um numero abaixo de 1, se sim exibe a mensagem abaixo.
         {
            system("cls");
            cout<< "\n\nO numero digitado tem que ser maior ou igual a 1\n\n";
            system("pause");
         }
      }while(num2 < 1); // verifida se o usuário não digitou nem um numero abaixo de 1, se sim repete o laço.
      if(num1 > num2) // verifica se o primeiro numero é maior que o segundo se for ele enverte os numeros.
      {
         swap = num1;
         num1 = num2;
         num2 = swap;
      }
      cont2=0; // Usado para verificar se foi encontrado algun numero primo ou não.
      system("cls");
      for(i = num1; i <= num2; i++)// Começa do menor numero digitado pelo usuário até o maior numero digitado pelo usuário.
      {
         cont=0;// verifica se o numero tem mais de um divisor, alem dele mesmo, pois qualquer numero divide por ele mesmo.
         if(i != 1 && (i == 2 || i % 2 != 0)) // Verifica se o numero i é o numero 1, caso seja não executa o procedimento abaixo, pois 1 não é numero primo, se for 2 deicha passar mas nem outro numero par, pois nem um outro numero par é primo.
         {
            for(j = 1; j <= 9; j++) // Laço feito para dividir todos os numeros no intervalo acima diitado, de 1 a 9, pois qualquer numero é composto por estes numeros básicos, então pelomenos um numero deste, ele irá dividir e dar resto 0.
            {
                  if(i % j == 0) // verifica se o numero de i é divisivel por o numero de j e o resto é 0.
                     cont++; // se for a variavel irá atribuir +1, ou seja i é divisivel por j e o resto é 0.
            }
            if(i > 1 && i < 9) // Se o valor estiver entre 2 e 9, o valor dividira pelomenos 2 veses, sendo que ele quer saber se no máximo o numero é divisivel por 1 alem dele mesmo, então qualquer numero nesta faixa é pelomenos divisivel duas veses.
               cont--; // Então eliminamos um valor pois não queremos saber se ele é divisivel por ele mesmo, e sim por outros numeros e por 1 é claro.
         }
         if(cont == 1)// Verifica se o numero é divisivel só uma vez ou seja apenas por 1, pois qualquer numero divide por ele mesmo, caso seja verdade imprime o numero primo.
         {
            cout<< "Numero Primo:\t" << i << endl;
            cont2++; // Soma-se +1 se tiver um numero primo, para afirmar que encontrou pelomenos 1 numero primo, se não é utilizado para avisar que não encontrou nem um numero primo.
         }
      }
      system("pause");
      if(cont2 == 0) // é utilizado para avisar que não encontrou nem um numero primo.
      {
         system("cls");
         cout<< "Nem um numero foi encontrado no intervalo" << num1 << " ... " << num2 << endl;
         system("pause");
      }

      system("cls");
      cout<< "Gostaria de tentar encontrar um valor primo novamente? S = sim  ou  N = nao\n\t"; // Solicita ao usuário se ele gostaria de procura mais numeros primos novamente.
      cin>> resp;
   }while(resp == 's' || resp == 'S'); // Se a resposta so usuário for 'S' sim executa tudo novamente.
}
avatar
Renancr

Mensagens : 118
Data de inscrição : 08/03/2010

Ver perfil do usuário

Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum