From 2653231fa725491284fbc66b5fa7bd72eef64d94 Mon Sep 17 00:00:00 2001 From: itsvinayak Date: Wed, 31 Jul 2019 10:31:46 +0530 Subject: [PATCH 1/4] project_euler/problem_10 --- project_euler/problem_10/sol3.py | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 project_euler/problem_10/sol3.py diff --git a/project_euler/problem_10/sol3.py b/project_euler/problem_10/sol3.py new file mode 100644 index 000000000000..81e962046b62 --- /dev/null +++ b/project_euler/problem_10/sol3.py @@ -0,0 +1,20 @@ +#https://projecteuler.net/problem=10 +#using Sieve_of_Eratosthenes + +def prime_sum(n): + l=[0 for i in range(n+1)] + + l[0]=1 + l[1]=1 + for i in range(2,int(n**0.5)+1): + if l[i]==0: + for j in range(i * i, n+1, i): + l[j]=1 + s=0 + for i in range(n): + if l[i] == 0: + s+=i + print(s) + +if __name__ == '__main__': + prime_sum(2000000) From d15ce6e45c019c34843f4cb1830e9343851db730 Mon Sep 17 00:00:00 2001 From: itsvinayak Date: Wed, 31 Jul 2019 12:05:40 +0530 Subject: [PATCH 2/4] update project_euler/problem_10 --- project_euler/problem_10/sol3.py | 72 +++++++++++++++++++++++++------- 1 file changed, 58 insertions(+), 14 deletions(-) diff --git a/project_euler/problem_10/sol3.py b/project_euler/problem_10/sol3.py index 81e962046b62..5cb9297e4636 100644 --- a/project_euler/problem_10/sol3.py +++ b/project_euler/problem_10/sol3.py @@ -1,20 +1,64 @@ -#https://projecteuler.net/problem=10 -#using Sieve_of_Eratosthenes +""" +https://projecteuler.net/problem=10 + +Problem Statement: +The sum of the primes below 10 is 2 + 3 + 5 + 7 = 17. + +Find the sum of all the primes below two million. + +using Sieve_of_Eratosthenes : + +The sieve of Eratosthenes is one of the most efficient ways to find all primes smaller than n when n is smaller than 10 million +""" + +try: + raw_input # Python 2 +except NameError: + raw_input = input # Python 3 + +try: + xrange # Python 2 +except NameError: + xrange = range # Python 3 + def prime_sum(n): - l=[0 for i in range(n+1)] - - l[0]=1 - l[1]=1 - for i in range(2,int(n**0.5)+1): - if l[i]==0: - for j in range(i * i, n+1, i): - l[j]=1 + """Returns the sum of all the primes below n. + + + >>> prime_sum(2000000) + 142913828922 + >>> prime_sum(1000) + 76127 + >>> prime_sum(5000) + 1548136 + >>> prime_sum(10000) + 5736396 + >>> prime_sum(7) + 10 + + """ + + list = [0 for i in xrange(n+1)] + + list[0]=1 + list[1]=1 + + for i in xrange(2,int(n**0.5)+1): + if list[i]==0: + for j in xrange(i * i, n+1, i): + list[j]=1 s=0 - for i in range(n): - if l[i] == 0: + for i in xrange(n): + if list[i] == 0: s+=i - print(s) + return(s) if __name__ == '__main__': - prime_sum(2000000) + + #import doctest + #doctest.testmod() + + print(prime_sum(int(raw_input()))) + + From d70a9f0dfb3cba966f8604d83e70ee66ce434938 Mon Sep 17 00:00:00 2001 From: itsvinayak Date: Wed, 31 Jul 2019 16:30:06 +0530 Subject: [PATCH 3/4] update project_euler/problem_10 --- project_euler/problem_10/sol3.py | 33 +++++++++++++------------------- 1 file changed, 13 insertions(+), 20 deletions(-) diff --git a/project_euler/problem_10/sol3.py b/project_euler/problem_10/sol3.py index 5cb9297e4636..cd7412c85fba 100644 --- a/project_euler/problem_10/sol3.py +++ b/project_euler/problem_10/sol3.py @@ -9,20 +9,13 @@ using Sieve_of_Eratosthenes : The sieve of Eratosthenes is one of the most efficient ways to find all primes smaller than n when n is smaller than 10 million -""" - -try: - raw_input # Python 2 -except NameError: - raw_input = input # Python 3 -try: - xrange # Python 2 -except NameError: - xrange = range # Python 3 +only for positive numbers +""" def prime_sum(n): + """Returns the sum of all the primes below n. @@ -39,18 +32,18 @@ def prime_sum(n): """ - list = [0 for i in xrange(n+1)] + list_ = [0 for i in range(n+1)] - list[0]=1 - list[1]=1 + list_[0]=1 + list_[1]=1 - for i in xrange(2,int(n**0.5)+1): - if list[i]==0: - for j in xrange(i * i, n+1, i): - list[j]=1 + for i in range(2,int(n**0.5)+1): + if list_[i]==0: + for j in range(i * i, n+1, i): + list_[j]=1 s=0 - for i in xrange(n): - if list[i] == 0: + for i in range(n): + if list_[i] == 0: s+=i return(s) @@ -59,6 +52,6 @@ def prime_sum(n): #import doctest #doctest.testmod() - print(prime_sum(int(raw_input()))) + print(prime_sum(int(input().strip()))) From e85adbd1676676cd342bfe59b36d8d9687295788 Mon Sep 17 00:00:00 2001 From: Christian Clauss Date: Wed, 31 Jul 2019 13:20:11 +0200 Subject: [PATCH 4/4] Negative user tests added. --- project_euler/problem_10/sol3.py | 83 ++++++++++++++++---------------- 1 file changed, 42 insertions(+), 41 deletions(-) diff --git a/project_euler/problem_10/sol3.py b/project_euler/problem_10/sol3.py index cd7412c85fba..e5bc0731d8ab 100644 --- a/project_euler/problem_10/sol3.py +++ b/project_euler/problem_10/sol3.py @@ -4,54 +4,55 @@ Problem Statement: The sum of the primes below 10 is 2 + 3 + 5 + 7 = 17. -Find the sum of all the primes below two million. - -using Sieve_of_Eratosthenes : - -The sieve of Eratosthenes is one of the most efficient ways to find all primes smaller than n when n is smaller than 10 million - -only for positive numbers +Find the sum of all the primes below two million using Sieve_of_Eratosthenes: +The sieve of Eratosthenes is one of the most efficient ways to find all primes +smaller than n when n is smaller than 10 million. Only for positive numbers. """ -def prime_sum(n): - - """Returns the sum of all the primes below n. - - - >>> prime_sum(2000000) - 142913828922 - >>> prime_sum(1000) - 76127 - >>> prime_sum(5000) - 1548136 - >>> prime_sum(10000) - 5736396 - >>> prime_sum(7) - 10 +def prime_sum(n: int) -> int: + """ Returns the sum of all the primes below n. + + >>> prime_sum(2_000_000) + 142913828922 + >>> prime_sum(1_000) + 76127 + >>> prime_sum(5_000) + 1548136 + >>> prime_sum(10_000) + 5736396 + >>> prime_sum(7) + 10 + >>> prime_sum(7.1) # doctest: +ELLIPSIS + Traceback (most recent call last): + ... + TypeError: 'float' object cannot be interpreted as an integer + >>> prime_sum(-7) # doctest: +ELLIPSIS + Traceback (most recent call last): + ... + IndexError: list assignment index out of range + >>> prime_sum("seven") # doctest: +ELLIPSIS + Traceback (most recent call last): + ... + TypeError: can only concatenate str (not "int") to str """ - - list_ = [0 for i in range(n+1)] - - list_[0]=1 - list_[1]=1 + list_ = [0 for i in range(n + 1)] + list_[0] = 1 + list_[1] = 1 - for i in range(2,int(n**0.5)+1): - if list_[i]==0: - for j in range(i * i, n+1, i): - list_[j]=1 - s=0 + for i in range(2, int(n ** 0.5) + 1): + if list_[i] == 0: + for j in range(i * i, n + 1, i): + list_[j] = 1 + s = 0 for i in range(n): if list_[i] == 0: - s+=i - return(s) - -if __name__ == '__main__': - - #import doctest - #doctest.testmod() - - print(prime_sum(int(input().strip()))) + s += i + return s +if __name__ == "__main__": + # import doctest + # doctest.testmod() + print(prime_sum(int(input().strip())))