• Lunes 20 de Mayo de 2024, 00:00

Autor Tema:  Otra Manera De Hallar Numeros Primos  (Leído 1632 veces)

Perrero

  • Miembro MUY activo
  • ***
  • Mensajes: 209
    • Ver Perfil
Otra Manera De Hallar Numeros Primos
« en: Sábado 3 de Junio de 2006, 21:51 »
0
Estoy aprendiendo C y hice un programa que haya los numeros primos del 0 al 100, de esta manera:

Código: Text
  1.  
  2. #include <stdio.h>
  3. #include <windows.h>
  4.  
  5. int main()
  6. {
  7.     int i;
  8.     for (i=0;i<=100;i++)
  9.         if ((i%2!=0) && (i%3!=0) && (i%5!=0) && (i%11!=0))
  10.            printf(" %i",i);
  11.         else if ((i==2) || (i==3))
  12.                 printf(" %i",i);
  13.     printf("\n\n");
  14.     system("pause");
  15.     return 0;
  16. }
  17.  
  18.  

Quisiera saber si se pueden hallar de otra manera, ya que esta no me parece muy "pensada" o es que acaso es una muy buena manera?... :hola:

robbie110487

  • Miembro activo
  • **
  • Mensajes: 66
    • Ver Perfil
Re: Otra Manera De Hallar Numeros Primos
« Respuesta #1 en: Sábado 3 de Junio de 2006, 22:25 »
0
Encontre esta, pero en c++ y es de 20 a 100, ya solo tienes que pasarla a c, no es dificil

Código: Text
  1. #include<iostream>
  2. #include<iomanip>
  3.  
  4. using namespace std;
  5.  
  6. int main()
  7. {  
  8.    cout<<"Numeros primos entre 20 y 100:"<<endl;
  9.  
  10.    int i;
  11.    for(int n=23; n<100; n++)
  12.    {  
  13.       for(i=2; n%i; i++);
  14.       if(i==n) cout<<setw(4)<<n;
  15.    }
  16.    cout<<endl;
  17.    cin.get();
  18.    return 0;
  19. }
  20.  

eTc

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Re: Otra Manera De Hallar Numeros Primos
« Respuesta #2 en: Domingo 4 de Junio de 2006, 15:14 »
0
A ver si te sirve este..
Código: Text
  1. #include <iostream>
  2. #include <math.h>
  3.  
  4. using namespace std;
  5.  
  6. bool esPrimer(int a) {
  7.      int i=1;
  8.      int b=(int)ceil(sqrt(a));    
  9.      do {
  10.          i++;
  11.      } while((a%i!=0)&&(i<=b));
  12. return (i>b);
  13. }
  14.  
  15. int main(int argc, char *argv[]) {
  16. int i,a=1,c=atoi(argv[1]);
  17. cout << 1;
  18. for (i=2;i<=c;i++) {
  19.  if (esPrimer(i)) { a++; cout << "," << i; }
  20. }
  21. cout << "." << endl;
  22. cout << "Numeros primeros encontrados entre 1 y " << c << ": " << a << endl;
  23. return 0;    
  24. }
  25.  
  26.  

Diría que los encuentra todos, entre 1 y un número que le pases por parámetro...
Su uso es ./programa MAX_NUMERO_QUE_QUIERAS_COMPROVAR, por ejemplo ./programa 1000 y te busca primos de 1 a 1000
Un saludo

fuhrer

  • Miembro MUY activo
  • ***
  • Mensajes: 329
  • Nacionalidad: mx
    • Ver Perfil
    • http://admin.busquenoseninternet.com
Re: Otra Manera De Hallar Numeros Primos
« Respuesta #3 en: Lunes 5 de Junio de 2006, 22:05 »
0
Hola, que tal.

Para encontrar número primos dado un número, existen varias maneras de hacerlo, pero principalmente se maneja una forma estandar de hacer esto, la cual te garantiza un error muy pequeño, además que este algorítmo es utilizado por programas matematicos como Matlab, Maple, Matematica, entre otros.

El algoritmo es el de Miller Rabin, lo que hace este algorítmo es decir si algún número es primo o no y es demaciado rápido. Puedes buscarlo como Miller-Rabin primality test y encontraras el algorítmo.

Hasta luego.