[ Foro de C# ]

Número primo

02-Oct-2016 23:45
Invitado (csh)
1 Respuestas

Estoy comprobando si un número es primo viendo si aparece algún divisor que no sea 1 y el propio número, pero es lento para números grandes. Hay alguna forma fácil de mejorarlo?


using System;
public class primo
{
    public static void Main()
    {
        int numero;
        int divisores = 0;
        
        Console.WriteLine("Numero?");
        numero = Convert.ToInt32( Console.ReadLine() );
        
        for ( int i = 2; i < numero; i++ )
            if ( numero % i == 0 )
                divisores++;

        if ( divisores > 0 )
            Console.WriteLine("No es primo");
        else
            Console.WriteLine("Es primo");
    }
}


 


04-Oct-2016 15:46
Nacho Cabanes (+84)

Se pueden hacer varias mejoras simples. Por ejemplo, podrías cortar en cuanto encuentres un divisor, no hace falta contar todos. En general eso lo acerará mucho. Además, puedes hacerlo el doble de rápido si miras el 2 como caso especial y a partir de ahí sólo miras los impares.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)