Главная > programming > Решето Эратосфена: Java vs. Haskell

Решето Эратосфена: Java vs. Haskell

Как говорится, почувствуйте разницу, Java:

import java.util.Arrays;

public class PrimeNumbers {

	public static boolean[] getSieve(int n) {
		boolean[] primes = new boolean[n + 1];
		Arrays.fill(primes, 2, n + 1, true);
		for (int i = 2; i * i <= n; i++) {
			if (primes[i]) {
				for (int k = i * i; k <= n; k += i) {
					primes[k] = false;
				}
			}
		}
		return primes;
	}
}

vs. Haskell:

primes = sieve [2..]
    where
        sieve (x:xs) = x:sieve (filter ((/= 0).(`mod` x)) xs)

Для кучи, Python (кратко, но уже не так чисто с функциональной точки зрения):

nums = range(2, 50)
for i in range(2, 8):
    nums = filter(lambda x: x == i or x % i, nums)
Реклама
Рубрики:programming
  1. Октябрь 2, 2008 в 5:53 пп

    Haskell:

    primes = nubBy (((<1) .) . flip mod) [2..]

    😉

  1. No trackbacks yet.

Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: