From 4558e59c8aae9bdbe511ccf020e86da08585d883 Mon Sep 17 00:00:00 2001 From: jowerman Date: Thu, 7 Nov 2019 09:31:34 +0800 Subject: [PATCH 1/3] Add sol3 for project_euler proble_03 --- project_euler/problem_03/sol3.py | 63 ++++++++++++++++++++++++++++++++ 1 file changed, 63 insertions(+) create mode 100644 project_euler/problem_03/sol3.py diff --git a/project_euler/problem_03/sol3.py b/project_euler/problem_03/sol3.py new file mode 100644 index 000000000000..9893c704ea5f --- /dev/null +++ b/project_euler/problem_03/sol3.py @@ -0,0 +1,63 @@ +""" +Problem: +The prime factors of 13195 are 5,7,13 and 29. What is the largest prime factor +of a given number N? + +e.g. for 10, largest prime factor = 5. For 17, largest prime factor = 17. +""" + + +def solution(n): + """Returns the largest prime factor of a given number n. + + >>> solution(13195) + 29 + >>> solution(10) + 5 + >>> solution(17) + 17 + >>> solution(3.4) + 3 + >>> solution(0) + Traceback (most recent call last): + ... + ValueError: Parameter n must be greater or equal to one. + >>> solution(-17) + Traceback (most recent call last): + ... + ValueError: Parameter n must be greater or equal to one. + >>> solution([]) + Traceback (most recent call last): + ... + TypeError: Parameter n must be int or passive of cast to int. + >>> solution("asd") + Traceback (most recent call last): + ... + TypeError: Parameter n must be int or passive of cast to int. + """ + try: + n = int(n) + except (TypeError, ValueError) as e: + raise TypeError("Parameter n must be int or passive of cast to int.") + if n <= 0: + raise ValueError("Parameter n must be greater or equal to one.") + prime = 1 + i = 2 + ans = 0 + if n==2: + return 2 + while n > 2: + while n%i != 0: + i += 1 + ans = i + while(n%i ==0): + n = n/i + i += 1 + + return int(ans) + + +if __name__ == "__main__": + #print(solution(int(input().strip()))) + import doctest + doctest.testmod() From 63509849f08d842e1ffdf48d43d98e753523a90b Mon Sep 17 00:00:00 2001 From: jwmneu Date: Thu, 7 Nov 2019 16:13:28 +0800 Subject: [PATCH 2/3] Update sol3.py add type hint remove unused variable --- project_euler/problem_03/sol3.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/project_euler/problem_03/sol3.py b/project_euler/problem_03/sol3.py index 9893c704ea5f..34329c26e621 100644 --- a/project_euler/problem_03/sol3.py +++ b/project_euler/problem_03/sol3.py @@ -7,7 +7,7 @@ """ -def solution(n): +def solution(n:int)->int: """Returns the largest prime factor of a given number n. >>> solution(13195) @@ -41,7 +41,6 @@ def solution(n): raise TypeError("Parameter n must be int or passive of cast to int.") if n <= 0: raise ValueError("Parameter n must be greater or equal to one.") - prime = 1 i = 2 ans = 0 if n==2: From f551ee6f944c4f6cd2ef45d23609b40ba717f97e Mon Sep 17 00:00:00 2001 From: Christian Clauss Date: Thu, 7 Nov 2019 09:37:06 +0100 Subject: [PATCH 3/3] Format code with psf/black --- project_euler/problem_03/sol3.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/project_euler/problem_03/sol3.py b/project_euler/problem_03/sol3.py index 34329c26e621..5fe45df59984 100644 --- a/project_euler/problem_03/sol3.py +++ b/project_euler/problem_03/sol3.py @@ -7,7 +7,7 @@ """ -def solution(n:int)->int: +def solution(n: int) -> int: """Returns the largest prime factor of a given number n. >>> solution(13195) @@ -37,26 +37,27 @@ def solution(n:int)->int: """ try: n = int(n) - except (TypeError, ValueError) as e: + except (TypeError, ValueError): raise TypeError("Parameter n must be int or passive of cast to int.") if n <= 0: raise ValueError("Parameter n must be greater or equal to one.") i = 2 ans = 0 - if n==2: + if n == 2: return 2 while n > 2: - while n%i != 0: + while n % i != 0: i += 1 ans = i - while(n%i ==0): - n = n/i + while n % i == 0: + n = n / i i += 1 return int(ans) if __name__ == "__main__": - #print(solution(int(input().strip()))) + # print(solution(int(input().strip()))) import doctest + doctest.testmod()