From 5f54615b8b432950af451343627bd11c9bdcdff5 Mon Sep 17 00:00:00 2001 From: Juanitoupipou Date: Wed, 27 Nov 2024 15:49:52 +0100 Subject: [PATCH 01/10] Adding the function isProthNumber(n : int) which returns true if n is a Proth number --- maths/special_numbers/proth_number.py | 40 +++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) diff --git a/maths/special_numbers/proth_number.py b/maths/special_numbers/proth_number.py index 47747ed260f7..b2fd39b2be1e 100644 --- a/maths/special_numbers/proth_number.py +++ b/maths/special_numbers/proth_number.py @@ -59,6 +59,38 @@ def proth(number: int) -> int: return proth_list[number - 1] +def isProthNumber(number: int) -> bool : + """ + :param number: nth number to calculate in the sequence + :return: true if number is a Proth number, false etherwise + >>> proth(5) + true + >>> proth(34) + false + >>> proth(-1) + Traceback (most recent call last): + ... + ValueError: Input value of [number=-1] must be > 0 + >>> proth(6.0) + Traceback (most recent call last): + ... + TypeError: Input value of [number=6.0] must be an integer + """ + if number < 1: + msg = f"Input value of [number={number}] must be > 0" + raise ValueError(msg) + + N = number + N -= 1 + n = 0 + while N%2 == 0 : + N = N/2 + n += 1 + return N < (2**n) + + + + if __name__ == "__main__": import doctest @@ -73,3 +105,11 @@ def proth(number: int) -> int: continue print(f"The {number}th Proth number: {value}") + + list = [3, 5, 9, 13, 49, 57, 193, 241, 163, 201] + + for number in list : + if isProthNumber(number): + print(f"{number} is a Proth number") + else : + print(f"{number} is not a Proth number") \ No newline at end of file From a1ba381e4b3989035b5def3c666cf2109c57aef0 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Wed, 27 Nov 2024 14:56:36 +0000 Subject: [PATCH 02/10] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- maths/special_numbers/proth_number.py | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/maths/special_numbers/proth_number.py b/maths/special_numbers/proth_number.py index b2fd39b2be1e..0b02dcadc740 100644 --- a/maths/special_numbers/proth_number.py +++ b/maths/special_numbers/proth_number.py @@ -59,7 +59,7 @@ def proth(number: int) -> int: return proth_list[number - 1] -def isProthNumber(number: int) -> bool : +def isProthNumber(number: int) -> bool: """ :param number: nth number to calculate in the sequence :return: true if number is a Proth number, false etherwise @@ -79,16 +79,14 @@ def isProthNumber(number: int) -> bool : if number < 1: msg = f"Input value of [number={number}] must be > 0" raise ValueError(msg) - + N = number N -= 1 n = 0 - while N%2 == 0 : - N = N/2 + while N % 2 == 0: + N = N / 2 n += 1 - return N < (2**n) - - + return N < (2**n) if __name__ == "__main__": @@ -108,8 +106,8 @@ def isProthNumber(number: int) -> bool : list = [3, 5, 9, 13, 49, 57, 193, 241, 163, 201] - for number in list : + for number in list: if isProthNumber(number): print(f"{number} is a Proth number") - else : - print(f"{number} is not a Proth number") \ No newline at end of file + else: + print(f"{number} is not a Proth number") From fa04fdf57083d0bec45557e44b865c77d139dff6 Mon Sep 17 00:00:00 2001 From: Juanitoupipou Date: Wed, 27 Nov 2024 16:01:18 +0100 Subject: [PATCH 03/10] Fixing the issues of the isprothnumber function --- maths/special_numbers/proth_number.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/maths/special_numbers/proth_number.py b/maths/special_numbers/proth_number.py index b2fd39b2be1e..35eb3bad9801 100644 --- a/maths/special_numbers/proth_number.py +++ b/maths/special_numbers/proth_number.py @@ -59,7 +59,7 @@ def proth(number: int) -> int: return proth_list[number - 1] -def isProthNumber(number: int) -> bool : +def isprothnumber(number: int) -> bool : """ :param number: nth number to calculate in the sequence :return: true if number is a Proth number, false etherwise @@ -80,13 +80,13 @@ def isProthNumber(number: int) -> bool : msg = f"Input value of [number={number}] must be > 0" raise ValueError(msg) - N = number - N -= 1 + num = number + num -= 1 n = 0 - while N%2 == 0 : + while num%2 == 0 : N = N/2 n += 1 - return N < (2**n) + return num < (2**n) @@ -106,10 +106,10 @@ def isProthNumber(number: int) -> bool : print(f"The {number}th Proth number: {value}") - list = [3, 5, 9, 13, 49, 57, 193, 241, 163, 201] + listexe = [3, 5, 9, 13, 49, 57, 193, 241, 163, 201] - for number in list : - if isProthNumber(number): + for number in listexe : + if isprothnumber(number): print(f"{number} is a Proth number") else : print(f"{number} is not a Proth number") \ No newline at end of file From 49b454699bdae82fe6f376ad5a2879842000aca3 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Wed, 27 Nov 2024 15:03:49 +0000 Subject: [PATCH 04/10] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- maths/special_numbers/proth_number.py | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/maths/special_numbers/proth_number.py b/maths/special_numbers/proth_number.py index dcde9cc61ec3..e16df6a20642 100644 --- a/maths/special_numbers/proth_number.py +++ b/maths/special_numbers/proth_number.py @@ -59,7 +59,7 @@ def proth(number: int) -> int: return proth_list[number - 1] -def isprothnumber(number: int) -> bool : +def isprothnumber(number: int) -> bool: """ :param number: nth number to calculate in the sequence :return: true if number is a Proth number, false etherwise @@ -79,16 +79,14 @@ def isprothnumber(number: int) -> bool : if number < 1: msg = f"Input value of [number={number}] must be > 0" raise ValueError(msg) - + num = number num -= 1 n = 0 - while num%2 == 0 : - N = N/2 + while num % 2 == 0: + N = N / 2 n += 1 - return num < (2**n) - - + return num < (2**n) if __name__ == "__main__": @@ -108,7 +106,7 @@ def isprothnumber(number: int) -> bool : listexe = [3, 5, 9, 13, 49, 57, 193, 241, 163, 201] - for number in listexe : + for number in listexe: if isprothnumber(number): print(f"{number} is a Proth number") else: From 319b5010812f9d89ddfdd63b6e1445245d673edc Mon Sep 17 00:00:00 2001 From: Juanitoupipou Date: Wed, 27 Nov 2024 16:06:20 +0100 Subject: [PATCH 05/10] New fixes on isprothnumber() --- maths/special_numbers/proth_number.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maths/special_numbers/proth_number.py b/maths/special_numbers/proth_number.py index dcde9cc61ec3..7596b0402dbb 100644 --- a/maths/special_numbers/proth_number.py +++ b/maths/special_numbers/proth_number.py @@ -84,7 +84,7 @@ def isprothnumber(number: int) -> bool : num -= 1 n = 0 while num%2 == 0 : - N = N/2 + num = num/2 n += 1 return num < (2**n) From dc2f2f06e9d3017bb108630c43b533cf9093f8c7 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Wed, 27 Nov 2024 15:07:09 +0000 Subject: [PATCH 06/10] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- maths/special_numbers/proth_number.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/maths/special_numbers/proth_number.py b/maths/special_numbers/proth_number.py index 3a78f219845c..8a5e970ce593 100644 --- a/maths/special_numbers/proth_number.py +++ b/maths/special_numbers/proth_number.py @@ -83,8 +83,8 @@ def isprothnumber(number: int) -> bool: num = number num -= 1 n = 0 - while num%2 == 0 : - num = num/2 + while num % 2 == 0: + num = num / 2 n += 1 return num < (2**n) From 8776dd6d0daf20c62559a83d437070cbd47369e5 Mon Sep 17 00:00:00 2001 From: Juanitoupipou Date: Wed, 27 Nov 2024 16:17:25 +0100 Subject: [PATCH 07/10] Fixes on isprothnumber() --- maths/special_numbers/proth_number.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/maths/special_numbers/proth_number.py b/maths/special_numbers/proth_number.py index 3a78f219845c..d330b8d6d08f 100644 --- a/maths/special_numbers/proth_number.py +++ b/maths/special_numbers/proth_number.py @@ -63,15 +63,15 @@ def isprothnumber(number: int) -> bool: """ :param number: nth number to calculate in the sequence :return: true if number is a Proth number, false etherwise - >>> proth(5) + >>> isprothnumber(5) true - >>> proth(34) + >>> isprothnumber(34) false - >>> proth(-1) + >>> isprothnumber(-1) Traceback (most recent call last): ... ValueError: Input value of [number=-1] must be > 0 - >>> proth(6.0) + >>> isprothnumber(6.0) Traceback (most recent call last): ... TypeError: Input value of [number=6.0] must be an integer From 45b74616f2edc9947caae5e5793d2530dc993569 Mon Sep 17 00:00:00 2001 From: Juanitoupipou Date: Wed, 27 Nov 2024 16:23:42 +0100 Subject: [PATCH 08/10] Fixes on isprothnumber --- maths/special_numbers/proth_number.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maths/special_numbers/proth_number.py b/maths/special_numbers/proth_number.py index 0606e9013752..ed4bc1ba8074 100644 --- a/maths/special_numbers/proth_number.py +++ b/maths/special_numbers/proth_number.py @@ -84,7 +84,7 @@ def isprothnumber(number: int) -> bool: num -= 1 n = 0 while num % 2 == 0: - num = num / 2 + num = num // 2 n += 1 return num < (2**n) From 48cd50279cc8a5e70ac64f922f0a000723ce78d0 Mon Sep 17 00:00:00 2001 From: Juanitoupipou Date: Wed, 27 Nov 2024 16:28:08 +0100 Subject: [PATCH 09/10] Fixes on isprothnumber() --- maths/special_numbers/proth_number.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/maths/special_numbers/proth_number.py b/maths/special_numbers/proth_number.py index ed4bc1ba8074..146e6fc903fe 100644 --- a/maths/special_numbers/proth_number.py +++ b/maths/special_numbers/proth_number.py @@ -64,9 +64,9 @@ def isprothnumber(number: int) -> bool: :param number: nth number to calculate in the sequence :return: true if number is a Proth number, false etherwise >>> isprothnumber(5) - true + True >>> isprothnumber(34) - false + False >>> isprothnumber(-1) Traceback (most recent call last): ... From d5bc7306f2dda94950f7ad7b13bd4aa8edc58f0d Mon Sep 17 00:00:00 2001 From: Juanitoupipou Date: Wed, 27 Nov 2024 16:32:34 +0100 Subject: [PATCH 10/10] Fixes on isprothnumber --- maths/special_numbers/proth_number.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/maths/special_numbers/proth_number.py b/maths/special_numbers/proth_number.py index 146e6fc903fe..181cc1afb5a0 100644 --- a/maths/special_numbers/proth_number.py +++ b/maths/special_numbers/proth_number.py @@ -76,6 +76,10 @@ def isprothnumber(number: int) -> bool: ... TypeError: Input value of [number=6.0] must be an integer """ + if not isinstance(number, int): + msg = f"Input value of [number={number}] must be an integer" + raise TypeError(msg) + if number < 1: msg = f"Input value of [number={number}] must be > 0" raise ValueError(msg)