He ejecutado el mismo programa de los primos pero esta vez en C#. El límite fijado ha sido otra vez el número 100.000.000.
El resultado ha sido intermedio entre el código VB.NET (el más rápido con 10 minutos 21 segundos) y el código C++ (el más lento con 10 minutos 46 segundos después de activar la optimización de velocidad).
Exactamente con C# ha tardado 10 minutos 40 segundos.
Saludos.
El programa es el siguiente:
using System;
using System.IO;
using System.Globalization;
namespace BuscaPrimos
{
///
/// Descripción breve de Class1.
///
class Class1
{
///
/// Punto de entrada principal de la aplicación.
///
[STAThread]
static void Main(string[] args)
{
const string fichero = @"primos.txt";
System.IO.StreamWriter sw = new System.IO.StreamWriter(fichero);
string horaInicio = DateTime.Now.ToString("G",DateTimeFormatInfo.InvariantInfo);
int candidato = 5;
int pruebaDivisor;
int esPrimo;
int limiteSuperior;
Console.Write("Introduce el limite al que llegar: ");
limiteSuperior = Convert.ToInt32(Console.ReadLine());
sw.WriteLine(2);
sw.WriteLine(3);
while(candidato <= limiteSuperior)
{
pruebaDivisor = 5;
esPrimo = 1;
while(pruebaDivisor * pruebaDivisor <= candidato)
{
if(candidato % pruebaDivisor == 0)
{
esPrimo = 0;
break;
}
pruebaDivisor += 2;
}
if(esPrimo == 1)
sw.WriteLine(candidato);
candidato += 2;
pruebaDivisor = 5;
esPrimo = 1;
while(pruebaDivisor * pruebaDivisor <= candidato)
{
if((candidato % pruebaDivisor) == 0)
{
esPrimo = 0;
break;
}
pruebaDivisor += 2;
}
if(esPrimo == 1)
sw.WriteLine(candidato);
candidato += 4;
}
sw.Write("Hora de inicio: ");
sw.WriteLine(horaInicio);
sw.Write("Hora de final: ");
sw.WriteLine(DateTime.Now.ToString("G",DateTimeFormatInfo.InvariantInfo));
sw.Close();
Console.WriteLine("Fin.");
}
}
}
No hay comentarios:
Publicar un comentario