summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/projecteuler/001.py7
-rw-r--r--src/projecteuler/002.c20
-rw-r--r--src/projecteuler/003.py9
-rw-r--r--src/projecteuler/004.py23
-rw-r--r--src/projecteuler/005.py17
-rw-r--r--src/projecteuler/006.py13
-rw-r--r--src/projecteuler/008.py22
-rw-r--r--src/projecteuler/016.py9
-rw-r--r--src/projecteuler/020.py16
-rw-r--r--src/projecteuler/025.py19
10 files changed, 155 insertions, 0 deletions
diff --git a/src/projecteuler/001.py b/src/projecteuler/001.py
new file mode 100644
index 0000000..dd1cbc6
--- /dev/null
+++ b/src/projecteuler/001.py
@@ -0,0 +1,7 @@
+result = 0
+
+for i in range(1,1000):
+ if i % 3 == 0 or i % 5 == 0:
+ result += i
+
+print result
diff --git a/src/projecteuler/002.c b/src/projecteuler/002.c
new file mode 100644
index 0000000..7a16a80
--- /dev/null
+++ b/src/projecteuler/002.c
@@ -0,0 +1,20 @@
+int main()
+{
+ int previous = 1, next = 2;
+ int sum = 0, tmp = 0;
+
+ while(next <= 4000000)
+ {
+ if(!(next & 1))
+ sum += next;
+
+ tmp = next;
+ next += previous;
+ previous = tmp;
+ }
+
+ printf("%ld\n", sum);
+
+ return 0;
+}
+
diff --git a/src/projecteuler/003.py b/src/projecteuler/003.py
new file mode 100644
index 0000000..c5b3036
--- /dev/null
+++ b/src/projecteuler/003.py
@@ -0,0 +1,9 @@
+number = 600851475143
+
+i = 3
+while(i < number):
+ while(number % i == 0 and number != i):
+ number = number / i
+ i += 2
+
+print number
diff --git a/src/projecteuler/004.py b/src/projecteuler/004.py
new file mode 100644
index 0000000..ac655d0
--- /dev/null
+++ b/src/projecteuler/004.py
@@ -0,0 +1,23 @@
+max = 0
+
+def palindrom(number):
+ tmp = number
+ new = 0
+ while(tmp > 0):
+ new *= 10
+ new += tmp % 10
+ tmp = tmp / 10
+
+ if new == number:
+ return True
+ else:
+ return False
+
+
+for i in range(1,1000):
+ for j in range(1,1000):
+ if palindrom(i*j) and i*j > max:
+ max = i*j
+
+print max
+
diff --git a/src/projecteuler/005.py b/src/projecteuler/005.py
new file mode 100644
index 0000000..545f7b7
--- /dev/null
+++ b/src/projecteuler/005.py
@@ -0,0 +1,17 @@
+def divisible(number):
+ result = True
+ for i in range(1,21):
+ if number % i != 0:
+ result = False
+ break
+ return result
+
+number = 20
+
+while(True):
+ if divisible(number):
+ break
+ number += 20
+
+print number
+
diff --git a/src/projecteuler/006.py b/src/projecteuler/006.py
new file mode 100644
index 0000000..2010877
--- /dev/null
+++ b/src/projecteuler/006.py
@@ -0,0 +1,13 @@
+def sum_of_squares(limit):
+ result = 0
+ for i in range(1, limit+1):
+ result += i*i
+ return result
+
+def square_of_sums(limit):
+ result = 0
+ for i in range(1, limit+1):
+ result += i
+ return result*result
+
+print abs(sum_of_squares(100) - square_of_sums(100))
diff --git a/src/projecteuler/008.py b/src/projecteuler/008.py
new file mode 100644
index 0000000..002b958
--- /dev/null
+++ b/src/projecteuler/008.py
@@ -0,0 +1,22 @@
+number = 7316717653133062491922511967442657474235534919493496983520312774506326239578318016984801869478851843858615607891129494954595017379583319528532088055111254069874715852386305071569329096329522744304355766896648950445244523161731856403098711121722383113622298934233803081353362766142828064444866452387493035890729629049156044077239071381051585930796086670172427121883998797908792274921901699720888093776657273330010533678812202354218097512545405947522435258490771167055601360483958644670632441572215539753697817977846174064955149290862569321978468622482839722413756570560574902614079729686524145351004748216637048440319989000889524345065854122758866688116427171479924442928230863465674813919123162824586178664583591245665294765456828489128831426076900422421902267105562632111110937054421750694165896040807198403850962455444362981230987879927244284909188845801561660979191338754992005240636899125607176060588611646710940507754100225698315520005593572972571636269561882670428252483600823257530420752963450
+
+max = 0
+
+while(number > 0):
+ tmp = number
+ digit1 = tmp % 10
+ tmp = tmp / 10
+ digit2 = tmp % 10
+ tmp = tmp / 10
+ digit3 = tmp % 10
+ tmp = tmp / 10
+ digit4 = tmp % 10
+ tmp = tmp / 10
+ digit5 = tmp % 10
+ tmp = tmp / 10
+ number = number / 10
+ product = digit1 * digit2 * digit3 * digit4 * digit5
+ if product > max:
+ max = product
+
+print max
diff --git a/src/projecteuler/016.py b/src/projecteuler/016.py
new file mode 100644
index 0000000..d83451e
--- /dev/null
+++ b/src/projecteuler/016.py
@@ -0,0 +1,9 @@
+number = 1 << 1000
+
+sum = 0
+
+while(number > 0):
+ sum += number % 10
+ number = number / 10
+
+print sum
diff --git a/src/projecteuler/020.py b/src/projecteuler/020.py
new file mode 100644
index 0000000..451d614
--- /dev/null
+++ b/src/projecteuler/020.py
@@ -0,0 +1,16 @@
+def fac(limit):
+ result = 1
+ for i in range(1, limit+1):
+ result *= i
+ return result
+
+number = fac(100)
+
+sum = 0
+
+while(number > 0):
+ sum += number % 10
+ number = number / 10
+
+print sum
+
diff --git a/src/projecteuler/025.py b/src/projecteuler/025.py
new file mode 100644
index 0000000..b69bddc
--- /dev/null
+++ b/src/projecteuler/025.py
@@ -0,0 +1,19 @@
+import math
+
+def digits(number):
+ return math.ceil(math.log10(number+1))
+
+prev = 1
+next = 1
+count = 2
+
+while(True):
+ if(digits(next) >= 1000):
+ break
+ tmp = next
+ next += prev
+ prev = tmp
+ count += 1
+
+print count
+