Skip to content

Instantly share code, notes, and snippets.

View clementi's full-sized avatar
🎵
NP: Piano Sonata No. 1 in F-Sharp Minor, Op… (3:48/5:21)

Jeff Pratt clementi

🎵
NP: Piano Sonata No. 1 in F-Sharp Minor, Op… (3:48/5:21)
View GitHub Profile
(defn prime-factorization-aux [n candidate]
(if (= n 1)
'()
(if (= (mod n candidate) 0)
(cons candidate (prime-factorization-aux (/ n candidate) candidate))
(prime-factorization-aux n (+ candidate 1)))))
(defn prime-factorization [n]
(prime-factorization-aux n 2))
@clementi
clementi / prime-factorization.py
Created February 14, 2011 05:06
Prime Factorization Algorithm
def prime_factorization(n):
candidate = 2
while n > 1:
factors = []
while n % candidate == 0:
factors.append(candidate)
n /= candidate
if factors:
yield factors
candidate += 1
@clementi
clementi / euler-12.py
Created February 14, 2011 05:09
Project Euler Problem #12 Solution
def triangle_numbers():
n = 1
while True:
yield n * (n + 1) / 2
n += 1
def prime_factorization(n):
candidate = 2
while n > 1:
factors = []
@clementi
clementi / euler-14.py
Created February 16, 2011 02:37
Project Euler Problem #14 Solution
def is_even(n):
return n % 2 == 0
def collatz_length(n):
length = 0
while n > 1:
length += 1
if is_even(n):
n /= 2
else:
@clementi
clementi / euler-29.py
Created February 16, 2011 02:44
Project Euler Problem #29
import itertools
products = set()
for (a, b) in itertools.product(range(2, 101), range(2, 101)):
products.add(a ** b)
print len(products)
@clementi
clementi / euler-56.py
Created February 16, 2011 03:16
Project Euler Problem #56 Solution
from itertools import *
pairs = product(range(1, 100), range(1, 100))
exponentials = imap(lambda pair: pair[0] ** pair[1], pairs)
strings = imap(lambda exponential: str(exponential), exponentials)
sums = imap(lambda string: sum(map(lambda digit: int(digit), string)), strings)
print max(sums)
@clementi
clementi / euler-28.py
Created February 16, 2011 03:21
Project Euler Problem #28 Solution
current = 0
step = 2
sum = 0
limit = 1001 ** 2
spiral = range(1, limit + 1)
while current < limit:
for i in range(4):
@clementi
clementi / euler-45.cs
Created February 16, 2011 03:29
Project Euler Problem #45 Solution
public static void Main(string[] args)
{
for (var n = 286L; ; n++)
{
var triangleNumber = TriangleNumber(n);
if (IsPentagonal(triangleNumber) && IsHexagonal(triangleNumber))
{
Console.WriteLine(triangleNumber);
break;
}
@clementi
clementi / euler-24.py
Created February 16, 2011 02:42
Project Euler Problem #24 Solution
from itertools import permutations
MILLIONTH = 10 ** 6 - 1
print reduce(lambda x, y: str(x) + str(y), list(permutations(range(10), 10))[MILLIONTH])
@clementi
clementi / euler-97.py
Created February 16, 2011 02:53
Project Euler Problem #97 Solution
def is_even(n):
return n % 2 == 0
def mod_exp(base, exponent, modulus):
if exponent == 0:
return 1
temp = mod_exp(base, exponent / 2, modulus)
if is_even(exponent):