From 8e431d287c0e89041506da4c4da57e3e3d657d72 Mon Sep 17 00:00:00 2001 From: mjfernez Date: Mon, 3 Feb 2020 23:04:10 -0500 Subject: cleanup, added c translations for some --- 10001prime | Bin 0 -> 16880 bytes 10001prime.c | 42 +++++++++++++++++++++++++ 10001prime.py | 52 ++++++++++++++++--------------- 10001prime.py.orig | 30 ++++++++++++++++++ bigfactors2 | Bin 0 -> 16752 bytes bigfactors2.c | 31 +++++++++++++++++++ bigfactors2.py | 46 +++++++++++++++------------- bigfactors2.py.orig | 32 +++++++++++++++++++ collatz | Bin 0 -> 16688 bytes collatz.c | 39 +++++++++++++++++++++++ collatz.py | 38 +++++++++++++---------- collatz.py.orig | 24 +++++++++++++++ euler1.o | Bin 1640 -> 0 bytes fib.py | 39 +++++++++++------------ fib.py.orig | 33 ++++++++++++++++++++ largestprime.py | 80 +++++++++++++++++++++++++----------------------- largestprime.py.orig | 55 +++++++++++++++++++++++++++++++++ palindrome.py | 59 ++++++++++++++++++----------------- palindrome.py.orig | 40 ++++++++++++++++++++++++ prodgrid.c~ | 78 ---------------------------------------------- prodgrid.o | Bin 3864 -> 0 bytes productofdigits.py | 29 ++++++++++-------- productofdigits.py.orig | 18 +++++++++++ smallmult.py | 35 +++++++++++---------- smallmult.py.orig | 26 ++++++++++++++++ sumexp.py | 9 +++--- sumexp.py.orig | 10 ++++++ sumofprimes.py | 59 +++++++++++++++++------------------ sumofprimes.py.orig | 44 ++++++++++++++++++++++++++ sumsq.py | 23 +++++++------- sumsq.py.orig | 27 ++++++++++++++++ 31 files changed, 698 insertions(+), 300 deletions(-) create mode 100755 10001prime create mode 100644 10001prime.c create mode 100644 10001prime.py.orig create mode 100755 bigfactors2 create mode 100644 bigfactors2.c create mode 100644 bigfactors2.py.orig create mode 100755 collatz create mode 100644 collatz.c create mode 100644 collatz.py.orig delete mode 100644 euler1.o create mode 100644 fib.py.orig create mode 100644 largestprime.py.orig create mode 100644 palindrome.py.orig delete mode 100644 prodgrid.c~ delete mode 100644 prodgrid.o create mode 100644 productofdigits.py.orig create mode 100644 smallmult.py.orig create mode 100644 sumexp.py.orig create mode 100644 sumofprimes.py.orig create mode 100644 sumsq.py.orig diff --git a/10001prime b/10001prime new file mode 100755 index 0000000..a9cc351 Binary files /dev/null and b/10001prime differ diff --git a/10001prime.c b/10001prime.c new file mode 100644 index 0000000..2ef3bd8 --- /dev/null +++ b/10001prime.c @@ -0,0 +1,42 @@ +#include +#include +#include +int n = 1000000; + +int *listPrimes(int num){ + int i; + int *primes; + int *sieve = (int *) malloc(num * sizeof(int)); + //initialize to all 1s (except 0 and 1 which are not prime) + for(i = 2; i < num; i++) + sieve[i] = 1; + for(i = 2; i < ceil(sqrt(num)); i++){ + if(sieve[i] == 1){ + int j = i * i; + while(j < num){ + sieve[j] = 0; + j += i; + } + } + } + + //now check which were prime + int s = 0; + primes = (int *) malloc(sizeof(int)); + for(i = 2; i < num; i++){ + if(sieve[i]){ + primes[s] = i; + s++; + primes = (int *) realloc (primes, (s + 1) * sizeof(int)); + } + } + + return primes; +} + +int main(){ + int *p = listPrimes(n); + int prime10001 = p[10000]; + printf("%d\n", prime10001); + return 0; +} diff --git a/10001prime.py b/10001prime.py index ecaa8cd..bc51d49 100644 --- a/10001prime.py +++ b/10001prime.py @@ -1,30 +1,34 @@ -import PIL, math +import PIL +import math + +# Problem 7 - 10,001st prime + +# returns a list of every prime up to a certain number -#Problem 7 - 10,001st prime -#returns a list of every prime up to a certain number def listprimes(number): - primes = [] - if (number <=1): - return [1] - a = [1] * number - a[0]=0 - a[1]=0#1 and 0 are not prime - ##Sieve of eratosthenes - for i in range(2,int(math.ceil(math.sqrt(number)))): - if(a[i]==1): - j = i**2 #cross out all the multiples of i, starting with its square - while(j < number): - a[j] = 0 - j+=i - - for k in range(2, number): - #is prime - if(a[k]==1): - primes.append(k) - return primes + primes = [] + if (number <= 1): + return [1] + a = [1] * number + a[0] = 0 + a[1] = 0 # 1 and 0 are not prime + # Sieve of eratosthenes + for i in range(2, int(math.ceil(math.sqrt(number)))): + if(a[i] == 1): + j = i**2 # cross out all the multiples of i, starting with its square + while(j < number): + a[j] = 0 + j += i + + for k in range(2, number): + # is prime + if(a[k] == 1): + primes.append(k) + return primes + out_list = listprimes(1000000) -#print(out_list) -#return 10,001th prime factor +# print(out_list) +# return 10,001th prime factor print(out_list[10000]) diff --git a/10001prime.py.orig b/10001prime.py.orig new file mode 100644 index 0000000..ecaa8cd --- /dev/null +++ b/10001prime.py.orig @@ -0,0 +1,30 @@ +import PIL, math + +#Problem 7 - 10,001st prime + +#returns a list of every prime up to a certain number +def listprimes(number): + primes = [] + if (number <=1): + return [1] + a = [1] * number + a[0]=0 + a[1]=0#1 and 0 are not prime + ##Sieve of eratosthenes + for i in range(2,int(math.ceil(math.sqrt(number)))): + if(a[i]==1): + j = i**2 #cross out all the multiples of i, starting with its square + while(j < number): + a[j] = 0 + j+=i + + for k in range(2, number): + #is prime + if(a[k]==1): + primes.append(k) + return primes + +out_list = listprimes(1000000) +#print(out_list) +#return 10,001th prime factor +print(out_list[10000]) diff --git a/bigfactors2 b/bigfactors2 new file mode 100755 index 0000000..3e409b1 Binary files /dev/null and b/bigfactors2 differ diff --git a/bigfactors2.c b/bigfactors2.c new file mode 100644 index 0000000..97ba17d --- /dev/null +++ b/bigfactors2.c @@ -0,0 +1,31 @@ +#include +#include +#include + +int countFactors(int num){ + int factors = 0; + // Check only up until the square root of the number + int root = (int) ceil(sqrt(num)); + //printf("%d\n", root); + for(int i = 2; i < root; i++){ + if(num % i == 0) + factors+=2; + } + // Correction for perfect square + if(root * root == num) + factors -= 1; + return factors; +} + +int main(){ + int i = 1; + int k = 1; + int j = 0; + while(k < 500){ + j += i; + k = countFactors(j); + i += 1; + } + printf("%d has over 500 factors. Neat!\n", j); + return 0; +} diff --git a/bigfactors2.py b/bigfactors2.py index 41bc13d..9e51502 100644 --- a/bigfactors2.py +++ b/bigfactors2.py @@ -1,32 +1,34 @@ -import PIL, math +import PIL +import math + +# Problem 12 Highly divisible triangular number +# finds the first number with over 500 factors -#Problem 12 Highly divisible triangular number -#finds the first number with over 500 factors def countfactors(num): - factors = 0 - ### we only need to know about the FIRST HALF of factors, - ##one factor implies a second - root = int(math.ceil(math.sqrt(num))) - divs = range(1, root) - for d in divs: - if(num%d == 0): - factors += 2 - - #Correction if the number is a perfect square - if (root * root == num): - factors-=1 - return factors + factors = 0 + # we only need to know about the FIRST HALF of factors, + # one factor implies a second + root = int(math.ceil(math.sqrt(num))) + divs = range(1, root) + for d in divs: + if(num % d == 0): + factors += 2 + + # Correction if the number is a perfect square + if (root * root == num): + factors -= 1 + return factors #### MAIN ##### -i=1 -k=1 +i = 1 +k = 1 j = 0 while(k < 500): - j += i - k=countfactors(j) - print(str(j) + " has " + str(k) + " factors") - i += 1 + j += i + k = countfactors(j) + print(str(j) + " has " + str(k) + " factors") + i += 1 print("Ding! Ding! {} has over 500 factors, wow!".format(j)) diff --git a/bigfactors2.py.orig b/bigfactors2.py.orig new file mode 100644 index 0000000..41bc13d --- /dev/null +++ b/bigfactors2.py.orig @@ -0,0 +1,32 @@ +import PIL, math + +#Problem 12 Highly divisible triangular number +#finds the first number with over 500 factors + +def countfactors(num): + factors = 0 + ### we only need to know about the FIRST HALF of factors, + ##one factor implies a second + root = int(math.ceil(math.sqrt(num))) + divs = range(1, root) + for d in divs: + if(num%d == 0): + factors += 2 + + #Correction if the number is a perfect square + if (root * root == num): + factors-=1 + return factors + + +#### MAIN ##### +i=1 +k=1 +j = 0 +while(k < 500): + j += i + k=countfactors(j) + print(str(j) + " has " + str(k) + " factors") + i += 1 + +print("Ding! Ding! {} has over 500 factors, wow!".format(j)) diff --git a/collatz b/collatz new file mode 100755 index 0000000..75c5d45 Binary files /dev/null and b/collatz differ diff --git a/collatz.c b/collatz.c new file mode 100644 index 0000000..5bbb783 --- /dev/null +++ b/collatz.c @@ -0,0 +1,39 @@ +#include +#include +#include +#include + +// Temporary storage chain +//long int *chain; +// The longest sequence found so far +//long int *seq; + +// Size of the above arrays +long int c = 0; +long int s = 0; +long int collatz(long int seed){ + //chain = (long int *) realloc (chain, c * sizeof(long int)); + //chain[c - 1] == seed; + c++; + if(seed == 1) + return 0; + if(seed % 2 == 0) + seed = seed / 2; + else + seed = 3 * seed + 1; + //collatz(seed); +} + +int main(){ + for(long int i = 1; i < pow(10, 6); i++){ + c = 0; + //chain = (long int *) malloc(c * sizeof(long int)); + collatz(i); + printf("%d \n", i); + if(c > s){ + s = c; + } + } + printf("Has %d numbers \n", s); + return 0; +} diff --git a/collatz.py b/collatz.py index 404a2ed..74d5e1e 100644 --- a/collatz.py +++ b/collatz.py @@ -1,24 +1,28 @@ -import PIL, math +import PIL +import math -#Problem 14 Longest Collatz sequence -#Note, a little slow, takes about 15 seconds. -#There is probably a more efficient solution out there +# Problem 14 Longest Collatz sequence +# Note, a little slow, takes about 15 seconds. +# There is probably a more efficient solution out there chain = [] biggo = [] + def collatz(seed): - chain.append(seed) - if(seed == 1): return 0 - if(seed%2 == 0): - seed = seed/2 - else: - seed = 3*seed +1 - collatz(seed) + chain.append(seed) + if(seed == 1): + return 0 + if(seed % 2 == 0): + seed = seed/2 + else: + seed = 3*seed + 1 + collatz(seed) + -for n in range(1,pow(10,6)): - collatz(n) - if(len(chain)>len(biggo)): - biggo = chain - chain = [] +for n in range(1, pow(10, 6)): + collatz(n) + if(len(chain) > len(biggo)): + biggo = chain + chain = [] print(biggo) -print("Has " + str(len(biggo)) +" numbers.") +print("Has " + str(len(biggo)) + " numbers.") diff --git a/collatz.py.orig b/collatz.py.orig new file mode 100644 index 0000000..404a2ed --- /dev/null +++ b/collatz.py.orig @@ -0,0 +1,24 @@ +import PIL, math + +#Problem 14 Longest Collatz sequence +#Note, a little slow, takes about 15 seconds. +#There is probably a more efficient solution out there +chain = [] +biggo = [] + +def collatz(seed): + chain.append(seed) + if(seed == 1): return 0 + if(seed%2 == 0): + seed = seed/2 + else: + seed = 3*seed +1 + collatz(seed) + +for n in range(1,pow(10,6)): + collatz(n) + if(len(chain)>len(biggo)): + biggo = chain + chain = [] +print(biggo) +print("Has " + str(len(biggo)) +" numbers.") diff --git a/euler1.o b/euler1.o deleted file mode 100644 index 2abffe6..0000000 Binary files a/euler1.o and /dev/null differ diff --git a/fib.py b/fib.py index 77b32fa..c2f2691 100644 --- a/fib.py +++ b/fib.py @@ -1,33 +1,34 @@ -import PIL, math +import PIL +import math MAX = 4*10**6 -#Problem 2 Even Fibonnacci numbers +# Problem 2 Even Fibonnacci numbers fib = [1, 1] -k=1; +k = 1 while (True): - n = fib[k] + fib[k-1] - if(n>MAX): - break - else: - fib.append(n); - k+=1 + n = fib[k] + fib[k-1] + if(n > MAX): + break + else: + fib.append(n) + k += 1 -c=0 +c = 0 for i in fib: - num = str(i) - print(num + " ", end='') - c+=1 - if(c%10==0): - print() - + num = str(i) + print(num + " ", end='') + c += 1 + if(c % 10 == 0): + print() + print() print("The sum is: " + str(sum(fib))) -s=0 +s = 0 for i in fib: - if (i%2==0): - s+=i + if (i % 2 == 0): + s += i print("The sum of the even terms is: " + str(s)) diff --git a/fib.py.orig b/fib.py.orig new file mode 100644 index 0000000..77b32fa --- /dev/null +++ b/fib.py.orig @@ -0,0 +1,33 @@ +import PIL, math +MAX = 4*10**6 + +#Problem 2 Even Fibonnacci numbers +fib = [1, 1] + +k=1; +while (True): + n = fib[k] + fib[k-1] + if(n>MAX): + break + else: + fib.append(n); + k+=1 + +c=0 +for i in fib: + num = str(i) + print(num + " ", end='') + c+=1 + if(c%10==0): + print() + +print() + +print("The sum is: " + str(sum(fib))) + +s=0 +for i in fib: + if (i%2==0): + s+=i + +print("The sum of the even terms is: " + str(s)) diff --git a/largestprime.py b/largestprime.py index fa39904..fa53dc5 100644 --- a/largestprime.py +++ b/largestprime.py @@ -1,9 +1,10 @@ -import PIL, math +import PIL +import math import numpy as np -#Problem 3 Largest Prime Factor +# Problem 3 Largest Prime Factor ###INEFFICIENT METHODS### -#def isPrime(number): +# def isPrime(number): # if (number <=1): # return False # for i in range(2,number): @@ -11,45 +12,46 @@ import numpy as np # return False # return True -#def prime_factors(number): - #primes = [] - #for i in range(number, 2, -1): - #if(number%i==0): - #if (isPrime(i)): - #return i - #return primes - +# def prime_factors(number): +#primes = [] +# for i in range(number, 2, -1): +# if(number%i==0): +# if (isPrime(i)): +# return i +# return primes def prime_factors(number): - primes = [] - if (number <=1): - return [1] - a = np.ones(number) - a[0]=0 - a[1]=0#not prime - for i in range(2,int(math.ceil(math.sqrt(number)))): - if(a[i]==1): - j = i**2 #cross out all the multiples - while(j < number): - a[j] = False - j+=i - - for k in range(2, number): - #is prime is a factor - if(a[k]==1) and (number%k==0): - primes.append(k) - return primes - + primes = [] + if (number <= 1): + return [1] + a = np.ones(number) + a[0] = 0 + a[1] = 0 # not prime + for i in range(2, int(math.ceil(math.sqrt(number)))): + if(a[i] == 1): + j = i**2 # cross out all the multiples + while(j < number): + a[j] = False + j += i + + for k in range(2, number): + # is prime is a factor + if(a[k] == 1) and (number % k == 0): + primes.append(k) + return primes + + def lpf(number): - factor = 2 - while (number > factor): - if(number % factor == 0): - number = number/factor - factor = 2 - else: - factor +=1 - return factor - + factor = 2 + while (number > factor): + if(number % factor == 0): + number = number/factor + factor = 2 + else: + factor += 1 + return factor + + out = lpf(600851475143) print out diff --git a/largestprime.py.orig b/largestprime.py.orig new file mode 100644 index 0000000..fa39904 --- /dev/null +++ b/largestprime.py.orig @@ -0,0 +1,55 @@ +import PIL, math +import numpy as np +#Problem 3 Largest Prime Factor + +###INEFFICIENT METHODS### +#def isPrime(number): +# if (number <=1): +# return False +# for i in range(2,number): +# if(number%i==0): +# return False +# return True + +#def prime_factors(number): + #primes = [] + #for i in range(number, 2, -1): + #if(number%i==0): + #if (isPrime(i)): + #return i + #return primes + + + +def prime_factors(number): + primes = [] + if (number <=1): + return [1] + a = np.ones(number) + a[0]=0 + a[1]=0#not prime + for i in range(2,int(math.ceil(math.sqrt(number)))): + if(a[i]==1): + j = i**2 #cross out all the multiples + while(j < number): + a[j] = False + j+=i + + for k in range(2, number): + #is prime is a factor + if(a[k]==1) and (number%k==0): + primes.append(k) + return primes + +def lpf(number): + factor = 2 + while (number > factor): + if(number % factor == 0): + number = number/factor + factor = 2 + else: + factor +=1 + return factor + +out = lpf(600851475143) +print out diff --git a/palindrome.py b/palindrome.py index 9690553..be3fe79 100644 --- a/palindrome.py +++ b/palindrome.py @@ -1,40 +1,43 @@ -import PIL, math +import PIL +import math + +# Problem 4 - Palindrome Products -#Problem 4 - Palindrome Products def isPalindrome(number): - numchar = str(number) - middle = len(numchar)/2 - face = numchar[:middle] - ref = numchar[len(numchar):middle-1:-1] - if(face == ref): - return True - else: - return False + numchar = str(number) + middle = len(numchar)/2 + face = numchar[:middle] + ref = numchar[len(numchar):middle-1:-1] + if(face == ref): + return True + else: + return False + def findProduct(number): - for i in range(999,100,-1): - for j in range(999,100,-1): - if(i*j==number): - return [i,j] - + for i in range(999, 100, -1): + for j in range(999, 100, -1): + if(i*j == number): + return [i, j] + + def findMaxPalindrome(): - large = 0 - for i in range(999,100,-1): - for j in range(999,100,-1): - test = i*j - if(isPalindrome(test) and test > large): - large = test - return large + large = 0 + for i in range(999, 100, -1): + for j in range(999, 100, -1): + test = i*j + if(isPalindrome(test) and test > large): + large = test + return large + answer = findMaxPalindrome() print(answer) print("The factors are: " + str(findProduct(answer))) #x = input("Type a palindromic number: ") -#if(isPalindrome(x)): - #print "The factors are: " + str(findProduct(x)) -#else: - #print "not a palindrome" - - +# if(isPalindrome(x)): +# print "The factors are: " + str(findProduct(x)) +# else: +# print "not a palindrome" diff --git a/palindrome.py.orig b/palindrome.py.orig new file mode 100644 index 0000000..9690553 --- /dev/null +++ b/palindrome.py.orig @@ -0,0 +1,40 @@ +import PIL, math + +#Problem 4 - Palindrome Products + +def isPalindrome(number): + numchar = str(number) + middle = len(numchar)/2 + face = numchar[:middle] + ref = numchar[len(numchar):middle-1:-1] + if(face == ref): + return True + else: + return False + +def findProduct(number): + for i in range(999,100,-1): + for j in range(999,100,-1): + if(i*j==number): + return [i,j] + +def findMaxPalindrome(): + large = 0 + for i in range(999,100,-1): + for j in range(999,100,-1): + test = i*j + if(isPalindrome(test) and test > large): + large = test + return large + +answer = findMaxPalindrome() +print(answer) +print("The factors are: " + str(findProduct(answer))) +#x = input("Type a palindromic number: ") + +#if(isPalindrome(x)): + #print "The factors are: " + str(findProduct(x)) +#else: + #print "not a palindrome" + + diff --git a/prodgrid.c~ b/prodgrid.c~ deleted file mode 100644 index 611e036..0000000 --- a/prodgrid.c~ +++ /dev/null @@ -1,78 +0,0 @@ -#include -#include - -int matrix[20][20]= {{8, 2, 22, 97, 38, 15, 0, 40, 0, 75, 4, 5, 7, 78, 52, 12, 50, 77, 91, 8}, - {49, 49, 99, 40, 17, 81, 18, 57, 60, 87, 17, 40, 98, 43, 69, 48, 4, 56, 62, 0}, - {81, 49, 31, 73, 55, 79, 14, 29, 93, 71, 40, 67, 53, 88, 30, 3, 49, 13, 36, 65}, - {52, 70, 95, 23, 4, 60, 11, 42, 69, 24, 68, 56, 01, 32, 56, 71, 37, 02, 36, 91}, - {22, 31, 16, 71, 51, 67, 63, 89, 41, 92, 36, 54, 22, 40, 40, 28, 66, 33, 13, 80}, - {24, 47, 32, 60, 99, 3, 45, 2, 44, 75, 33, 53, 78, 36, 84, 20, 35, 17, 12, 50}, - {32, 98, 81, 28, 64, 23, 67, 10, 26, 38, 40, 67, 59, 54, 70, 66, 18, 38, 64, 70}, - {67, 26, 20, 68, 2, 62, 12, 20, 95, 63, 94, 39, 63, 8, 40, 91, 66, 49, 94, 21}, - {24, 55, 58, 5, 66, 73, 99, 26, 97, 17, 78, 78, 96, 83, 14, 88, 34, 89, 63, 72}, - {21, 36, 23, 9, 75, 0, 76, 44, 20, 45, 35, 14, 0, 61, 33, 97, 34, 31, 33, 95}, - {78, 17, 53, 28, 22, 75, 31, 67, 15, 94, 3, 80, 4, 62, 16, 14, 9, 53, 56, 92}, - {16, 39, 5, 42, 96, 35, 31, 47, 55, 58, 88, 24, 0, 17, 54, 24, 36, 29, 85, 57}, - {86, 56, 0, 48, 35, 71, 89, 7, 5, 44, 44, 37, 44, 60, 21, 58, 51, 54, 17, 58}, - {19, 80, 81, 68, 5, 94, 47, 69, 28, 73, 92, 13, 86, 52, 17, 77, 04, 89, 55, 40}, - {04, 52, 8, 83, 97, 35, 99, 16, 7, 97, 57, 32, 16, 26, 26, 79, 33, 27, 98, 66}, - {88, 36, 68, 87, 57, 62, 20, 72, 3, 46, 33, 67, 46, 55, 12, 32, 63, 93, 53, 69}, - {4, 42, 16, 73, 38, 25, 39, 11, 24, 94, 72, 18, 8, 46, 29, 32, 40, 62, 76, 36}, - {20, 69, 36, 41, 72, 30, 23, 88, 34, 62, 99, 69, 82, 67, 59, 85, 74, 4, 36, 16}, - {20, 73, 35, 29, 78, 31, 90, 1, 74, 31, 49, 71, 48, 86, 81, 16, 23, 57, 5, 54}, - {1, 70, 54, 71, 83, 51, 54, 69, 16, 92, 33, 48, 61, 43, 52, 01, 89, 19, 67, 48}}; - -int parseMatrix(int mat[20][20]){ - int maxi, i, j, k, c = 0; - int prod = 1; - for(i; i < 20; i++){ - for(j; j < 16; j++){ - k = j; - prod = 1; - for(k; k maxi) - maxi=prod; - } - } - /* - for(j=0; j < 20; j++){ - for(i=0; i < 16; i++){ - k = i; - prod = 1; - for(k; k maxi) - maxi=prod; - } - } - for(i=0; i < 16; i++){ - for(j=0; j < 16; j++){ - prod = 1; - for(c = 0; c < 4; c++) - prod*=mat[i+c][j+c]; - if(prod > maxi) - maxi=prod; - } - } - - for(i=0; i < 16; i++){ - for(j=19; j > 0; j--){ - prod = 1; - for(c = 0; c < 4; c++) - prod*=mat[i-c][j-c]; - if(prod > maxi) - maxi=prod; - } - } - */ - return maxi; -} - - -int main(){ - int ans = parseMatrix(matrix); - printf("%d\n", ans); - return 0; -} \ No newline at end of file diff --git a/prodgrid.o b/prodgrid.o deleted file mode 100644 index bd2e679..0000000 Binary files a/prodgrid.o and /dev/null differ diff --git a/productofdigits.py b/productofdigits.py index ddd5edc..3e7756e 100644 --- a/productofdigits.py +++ b/productofdigits.py @@ -1,18 +1,21 @@ -import PIL, math +import PIL +import math import numpy as np -#Problem 8 - largest Product in a series -bigBoy=7316717653133062491922511967442657474235534919493496983520312774506326239578318016984801869478851843858615607891129494954595017379583319528532088055111254069874715852386305071569329096329522744304355766896648950445244523161731856403098711121722383113622298934233803081353362766142828064444866452387493035890729629049156044077239071381051585930796086670172427121883998797908792274921901699720888093776657273330010533678812202354218097512545405947522435258490771167055601360483958644670632441572215539753697817977846174064955149290862569321978468622482839722413756570560574902614079729686524145351004748216637048440319989000889524345065854122758866688116427171479924442928230863465674813919123162824586178664583591245665294765456828489128831426076900422421902267105562632111110937054421750694165896040807198403850962455444362981230987879927244284909188845801561660979191338754992005240636899125607176060588611646710940507754100225698315520005593572972571636269561882670428252483600823257530420752963450 +# Problem 8 - largest Product in a series +bigBoy = 7316717653133062491922511967442657474235534919493496983520312774506326239578318016984801869478851843858615607891129494954595017379583319528532088055111254069874715852386305071569329096329522744304355766896648950445244523161731856403098711121722383113622298934233803081353362766142828064444866452387493035890729629049156044077239071381051585930796086670172427121883998797908792274921901699720888093776657273330010533678812202354218097512545405947522435258490771167055601360483958644670632441572215539753697817977846174064955149290862569321978468622482839722413756570560574902614079729686524145351004748216637048440319989000889524345065854122758866688116427171479924442928230863465674813919123162824586178664583591245665294765456828489128831426076900422421902267105562632111110937054421750694165896040807198403850962455444362981230987879927244284909188845801561660979191338754992005240636899125607176060588611646710940507754100225698315520005593572972571636269561882670428252483600823257530420752963450 + def parseNum(x, r): - search = str(x) - maxi = 0 - for ch in range(0,len(search)-r): - prod = int(search[ch]) - for dig in range(ch+1, ch+r): - prod*=int(search[dig]) - if (prod > maxi): - maxi = prod - return maxi - + search = str(x) + maxi = 0 + for ch in range(0, len(search)-r): + prod = int(search[ch]) + for dig in range(ch+1, ch+r): + prod *= int(search[dig]) + if (prod > maxi): + maxi = prod + return maxi + + print(parseNum(bigBoy, 13)) diff --git a/productofdigits.py.orig b/productofdigits.py.orig new file mode 100644 index 0000000..ddd5edc --- /dev/null +++ b/productofdigits.py.orig @@ -0,0 +1,18 @@ +import PIL, math +import numpy as np + +#Problem 8 - largest Product in a series +bigBoy=7316717653133062491922511967442657474235534919493496983520312774506326239578318016984801869478851843858615607891129494954595017379583319528532088055111254069874715852386305071569329096329522744304355766896648950445244523161731856403098711121722383113622298934233803081353362766142828064444866452387493035890729629049156044077239071381051585930796086670172427121883998797908792274921901699720888093776657273330010533678812202354218097512545405947522435258490771167055601360483958644670632441572215539753697817977846174064955149290862569321978468622482839722413756570560574902614079729686524145351004748216637048440319989000889524345065854122758866688116427171479924442928230863465674813919123162824586178664583591245665294765456828489128831426076900422421902267105562632111110937054421750694165896040807198403850962455444362981230987879927244284909188845801561660979191338754992005240636899125607176060588611646710940507754100225698315520005593572972571636269561882670428252483600823257530420752963450 + +def parseNum(x, r): + search = str(x) + maxi = 0 + for ch in range(0,len(search)-r): + prod = int(search[ch]) + for dig in range(ch+1, ch+r): + prod*=int(search[dig]) + if (prod > maxi): + maxi = prod + return maxi + +print(parseNum(bigBoy, 13)) diff --git a/smallmult.py b/smallmult.py index d672ef0..a8a6344 100644 --- a/smallmult.py +++ b/smallmult.py @@ -1,26 +1,29 @@ -#Problem 5 smallest multiple -#2520 is the smallest number that can be divided by -#each of the numbers from 1 to 10 without any remainder. -#What is the smallest positive number that is evenly divisible -#by all of the numbers from 1 to 20? +# Problem 5 smallest multiple +# 2520 is the smallest number that can be divided by +# each of the numbers from 1 to 10 without any remainder. +# What is the smallest positive number that is evenly divisible +# by all of the numbers from 1 to 20? + +import PIL +import math -import PIL, math def isDivisible(num, divisors): - divisible = True - for j in divisors: - if(num%j !=0): - divisible = False - break - return divisible + divisible = True + for j in divisors: + if(num % j != 0): + divisible = False + break + return divisible + -divs = range(1,21) +divs = range(1, 21) found = False start = 2520 while (not found): - start+=20 - found = isDivisible(start,divs) - + start += 20 + found = isDivisible(start, divs) + print(start) print(str(isDivisible(start, divs))) diff --git a/smallmult.py.orig b/smallmult.py.orig new file mode 100644 index 0000000..d672ef0 --- /dev/null +++ b/smallmult.py.orig @@ -0,0 +1,26 @@ +#Problem 5 smallest multiple +#2520 is the smallest number that can be divided by +#each of the numbers from 1 to 10 without any remainder. +#What is the smallest positive number that is evenly divisible +#by all of the numbers from 1 to 20? + +import PIL, math + +def isDivisible(num, divisors): + divisible = True + for j in divisors: + if(num%j !=0): + divisible = False + break + return divisible + +divs = range(1,21) + +found = False +start = 2520 +while (not found): + start+=20 + found = isDivisible(start,divs) + +print(start) +print(str(isDivisible(start, divs))) diff --git a/sumexp.py b/sumexp.py index 90dd2da..bbee0dc 100644 --- a/sumexp.py +++ b/sumexp.py @@ -1,10 +1,11 @@ -import PIL, math -#Problem 16 Power digit sum +import PIL +import math +# Problem 16 Power digit sum n = 2**1000 strn = str(n) s = 0 for i in strn: - s += int(i) - + s += int(i) + print(s) diff --git a/sumexp.py.orig b/sumexp.py.orig new file mode 100644 index 0000000..90dd2da --- /dev/null +++ b/sumexp.py.orig @@ -0,0 +1,10 @@ +import PIL, math +#Problem 16 Power digit sum +n = 2**1000 +strn = str(n) +s = 0 + +for i in strn: + s += int(i) + +print(s) diff --git a/sumofprimes.py b/sumofprimes.py index 3799e94..e85e394 100644 --- a/sumofprimes.py +++ b/sumofprimes.py @@ -1,8 +1,9 @@ -import PIL, math +import PIL +import math -#Problem 10 sum of primes +# Problem 10 sum of primes ###INEFFICIENT### -#def isPrime(number): +# def isPrime(number): # if (number <=1): # return False # for i in range(2,number): @@ -10,35 +11,35 @@ import PIL, math # return False # return True -#def prime_factors(number): - #primes = [] - #for i in range(number, 2, -1): - #if(number%i==0): - #if (isPrime(i)): - #return i - #return primes - +# def prime_factors(number): +#primes = [] +# for i in range(number, 2, -1): +# if(number%i==0): +# if (isPrime(i)): +# return i +# return primes def prime_factors(number): - primes = [] - if (number <=1): - return [1] - a = [1] * number - a[0]=0 - a[1]=0#not prime - for i in range(2,int(math.ceil(math.sqrt(number)))): - if(a[i]==1): - j = i**2 #cross out all the multiples - while(j < number): - a[j] = False - j+=i - - for k in range(2, number): - #is prime - if(a[k]==1): - primes.append(k) - return primes + primes = [] + if (number <= 1): + return [1] + a = [1] * number + a[0] = 0 + a[1] = 0 # not prime + for i in range(2, int(math.ceil(math.sqrt(number)))): + if(a[i] == 1): + j = i**2 # cross out all the multiples + while(j < number): + a[j] = False + j += i + + for k in range(2, number): + # is prime + if(a[k] == 1): + primes.append(k) + return primes + out = prime_factors(2000000) print(str(sum(out))) diff --git a/sumofprimes.py.orig b/sumofprimes.py.orig new file mode 100644 index 0000000..3799e94 --- /dev/null +++ b/sumofprimes.py.orig @@ -0,0 +1,44 @@ +import PIL, math + +#Problem 10 sum of primes +###INEFFICIENT### +#def isPrime(number): +# if (number <=1): +# return False +# for i in range(2,number): +# if(number%i==0): +# return False +# return True + +#def prime_factors(number): + #primes = [] + #for i in range(number, 2, -1): + #if(number%i==0): + #if (isPrime(i)): + #return i + #return primes + + + +def prime_factors(number): + primes = [] + if (number <=1): + return [1] + a = [1] * number + a[0]=0 + a[1]=0#not prime + for i in range(2,int(math.ceil(math.sqrt(number)))): + if(a[i]==1): + j = i**2 #cross out all the multiples + while(j < number): + a[j] = False + j+=i + + for k in range(2, number): + #is prime + if(a[k]==1): + primes.append(k) + return primes + +out = prime_factors(2000000) +print(str(sum(out))) diff --git a/sumsq.py b/sumsq.py index e5e8988..fdd43e4 100644 --- a/sumsq.py +++ b/sumsq.py @@ -1,16 +1,17 @@ -#The sum of the squares of the first ten natural numbers is, -#12 + 22 + ... + 102 = 385 -#The square of the sum of the first ten natural numbers is, -#(1 + 2 + ... + 10)2 = 552 = 3025 -#Hence the difference between the sum of the squares -#of the first ten natural numbers and the square of the sum is -#Find the difference between the sum of the squares of the first -#one hundred natural numbers and the square of the sum. +# The sum of the squares of the first ten natural numbers is, +# 12 + 22 + ... + 102 = 385 +# The square of the sum of the first ten natural numbers is, +# (1 + 2 + ... + 10)2 = 552 = 3025 +# Hence the difference between the sum of the squares +# of the first ten natural numbers and the square of the sum is +# Find the difference between the sum of the squares of the first +# one hundred natural numbers and the square of the sum. -import PIL, math +import PIL +import math -nums = range(1,11) -numsq = range(1,11) +nums = range(1, 11) +numsq = range(1, 11) for i in nums: i = i*i diff --git a/sumsq.py.orig b/sumsq.py.orig new file mode 100644 index 0000000..e5e8988 --- /dev/null +++ b/sumsq.py.orig @@ -0,0 +1,27 @@ +#The sum of the squares of the first ten natural numbers is, +#12 + 22 + ... + 102 = 385 +#The square of the sum of the first ten natural numbers is, +#(1 + 2 + ... + 10)2 = 552 = 3025 +#Hence the difference between the sum of the squares +#of the first ten natural numbers and the square of the sum is +#Find the difference between the sum of the squares of the first +#one hundred natural numbers and the square of the sum. + +import PIL, math + +nums = range(1,11) +numsq = range(1,11) + +for i in nums: + i = i*i + +print(nums) +print(numsq) + +sum1 = (sum(nums)**2) +sum2 = (sum(numsq)) + +print("The sum squared is: " + str(sum1)) +print("The sum of the squares is: " + str(sum2)) + +print("The difference is: " + str(abs(sum2-sum1))) -- cgit v1.2.3