Bueno, estos son scripts que hice, y se muestra la simplicidad de usar expresiones lambda, son muy simples, sobre todo el de python, bueno esto son los scripts
Codigo Python:
#!/usr/bin/python # primos.py # Genera primos usando programacion funcional # Coded by SerG from math import sqrt n = int("n> ") nums = range(2,n+1) root = int(sqrt(n))#Nro. de divisores for i in range(2,root+1): nums = filter(lambda num: num==i or num%i!=0, nums) # desde aca se puede hacer cualquier cosa con el # vector nums, ya que contiene los primos
Codigo C# (LinQ):
using System; using System.Collections.Generic; using System.Linq; namespace PrimosLinq { class Program { static void Main(string[] args) { int n = Convert.ToInt32(Console.ReadLine()); int[] nums = Enumerable.Range(2, n).ToArray(); int root = (int)(Math.Sqrt(n));//# de divisores for (int i = 2; i <= root; i++) nums = (from x in nums where x == i || x % i != 0 select x).ToArray (); long fin= DateTime.Now.Ticks; Console.WriteLine("Primos generados"); /* * Desde aca se puede hacer cualquier cosa con el * vector nums, ya que contiene los primos */ Console.Read(); } } }
Bueno, basicamente lo que hace es generar un vector que tenga todos los números desde 2 hasta n, luego hacemos un bucle desde 2 hasta la raiz cuadrada de la cantidad que queremos generar y obtiene los numeros que sean igual al indice o no sean divisores, esto lo hace la tantas veces dependiendo del tamaño de root.
Bueno, como pueden ver, usando expresiones lambda, las cosas siempre son más simples
esta bien culero el banner de tu sitio...
ResponderEliminar