From 5f54615b8b432950af451343627bd11c9bdcdff5 Mon Sep 17 00:00:00 2001 From: Juanitoupipou Date: Wed, 27 Nov 2024 15:49:52 +0100 Subject: [PATCH 01/18] 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/18] [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/18] 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/18] [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/18] 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/18] [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/18] 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/18] 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/18] 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/18] 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) From 44b36daeb5b949c83580dea8c162a2d997d70eec Mon Sep 17 00:00:00 2001 From: Maxim Smolskiy Date: Mon, 8 Sep 2025 02:19:07 +0300 Subject: [PATCH 11/18] Update proth_number.py --- maths/special_numbers/proth_number.py | 37 ++++++++++++--------------- 1 file changed, 16 insertions(+), 21 deletions(-) diff --git a/maths/special_numbers/proth_number.py b/maths/special_numbers/proth_number.py index 181cc1afb5a0..fe5153bc750b 100644 --- a/maths/special_numbers/proth_number.py +++ b/maths/special_numbers/proth_number.py @@ -59,38 +59,35 @@ def proth(number: int) -> int: return proth_list[number - 1] -def isprothnumber(number: int) -> bool: +def is_proth_number(number: int) -> bool: """ - :param number: nth number to calculate in the sequence - :return: true if number is a Proth number, false etherwise - >>> isprothnumber(5) + :param number: positive integer number + :return: true if number is a Proth number, false otherwise + >>> is_proth_number(5) True - >>> isprothnumber(34) + >>> is_proth_number(34) False - >>> isprothnumber(-1) + >>> is_proth_number(-1) Traceback (most recent call last): ... ValueError: Input value of [number=-1] must be > 0 - >>> isprothnumber(6.0) + >>> is_proth_number(6.0) Traceback (most recent call last): ... 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) + raise TypeError(f"Input value of [number={number}] must be an integer") - if number < 1: - msg = f"Input value of [number={number}] must be > 0" - raise ValueError(msg) + if number <= 0: + raise ValueError(f"Input value of [number={number}] must be > 0") - num = number - num -= 1 + number -= 1 n = 0 - while num % 2 == 0: - num = num // 2 + while number % 2 == 0: + number //= 2 n += 1 - return num < (2**n) + return number < 2**n if __name__ == "__main__": @@ -108,10 +105,8 @@ def isprothnumber(number: int) -> bool: print(f"The {number}th Proth number: {value}") - listexe = [3, 5, 9, 13, 49, 57, 193, 241, 163, 201] - - for number in listexe: - if isprothnumber(number): + for number in [3, 5, 9, 13, 49, 57, 193, 241, 163, 201]: + if is_proth_number(number): print(f"{number} is a Proth number") else: print(f"{number} is not a Proth number") From fd8d253b297a9b227961b4aef8fb8e59de0ff12e Mon Sep 17 00:00:00 2001 From: Maxim Smolskiy Date: Mon, 8 Sep 2025 02:21:45 +0300 Subject: [PATCH 12/18] Update proth_number.py --- maths/special_numbers/proth_number.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/maths/special_numbers/proth_number.py b/maths/special_numbers/proth_number.py index fe5153bc750b..9974923afa6a 100644 --- a/maths/special_numbers/proth_number.py +++ b/maths/special_numbers/proth_number.py @@ -77,10 +77,12 @@ def is_proth_number(number: int) -> bool: TypeError: Input value of [number=6.0] must be an integer """ if not isinstance(number, int): - raise TypeError(f"Input value of [number={number}] must be an integer") + message = f"Input value of [number={number}] must be an integer" + raise TypeError(message) if number <= 0: - raise ValueError(f"Input value of [number={number}] must be > 0") + message = f"Input value of [number={number}] must be > 0" + raise ValueError(message) number -= 1 n = 0 From 9b016fe5d914a6504c5e1421213fe18c4b91c5e7 Mon Sep 17 00:00:00 2001 From: Maxim Smolskiy Date: Mon, 8 Sep 2025 02:24:18 +0300 Subject: [PATCH 13/18] Update proth_number.py --- 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 9974923afa6a..e176d138ed0f 100644 --- a/maths/special_numbers/proth_number.py +++ b/maths/special_numbers/proth_number.py @@ -29,11 +29,11 @@ def proth(number: int) -> int: """ if not isinstance(number, int): - msg = f"Input value of [number={number}] must be an integer" + msg = f"Input value of [{number=}] must be an integer" raise TypeError(msg) if number < 1: - msg = f"Input value of [number={number}] must be > 0" + msg = f"Input value of [{number=}] must be > 0" raise ValueError(msg) elif number == 1: return 3 From a80cda00866a144b669e4c55c929a525647d4b46 Mon Sep 17 00:00:00 2001 From: Maxim Smolskiy Date: Mon, 8 Sep 2025 02:25:04 +0300 Subject: [PATCH 14/18] Update proth_number.py --- 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 e176d138ed0f..9895bd4415e7 100644 --- a/maths/special_numbers/proth_number.py +++ b/maths/special_numbers/proth_number.py @@ -29,11 +29,11 @@ def proth(number: int) -> int: """ if not isinstance(number, int): - msg = f"Input value of [{number=}] must be an integer" + msg = f"Input value of [number={number}] must be an integer" raise TypeError(msg) if number < 1: - msg = f"Input value of [{number=}] must be > 0" + msg = f"Input value of [number={number}] must be > 0" raise ValueError(msg) elif number == 1: return 3 @@ -77,11 +77,11 @@ def is_proth_number(number: int) -> bool: TypeError: Input value of [number=6.0] must be an integer """ if not isinstance(number, int): - message = f"Input value of [number={number}] must be an integer" + message = f"Input value of [{number=}] must be an integer" raise TypeError(message) if number <= 0: - message = f"Input value of [number={number}] must be > 0" + message = f"Input value of [{number=}] must be > 0" raise ValueError(message) number -= 1 From 58b62885ac65c0afd0c7e54b378f613575304675 Mon Sep 17 00:00:00 2001 From: Maxim Smolskiy Date: Mon, 8 Sep 2025 02:27:12 +0300 Subject: [PATCH 15/18] Update proth_number.py --- 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 9895bd4415e7..330b9a5e3ae5 100644 --- a/maths/special_numbers/proth_number.py +++ b/maths/special_numbers/proth_number.py @@ -87,8 +87,8 @@ def is_proth_number(number: int) -> bool: number -= 1 n = 0 while number % 2 == 0: - number //= 2 n += 1 + number //= 2 return number < 2**n From f05abe4a797dd554a024cd03f04c8fc15b5a84fb Mon Sep 17 00:00:00 2001 From: Maxim Smolskiy Date: Mon, 8 Sep 2025 02:33:30 +0300 Subject: [PATCH 16/18] Update proth_number.py --- maths/special_numbers/proth_number.py | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/maths/special_numbers/proth_number.py b/maths/special_numbers/proth_number.py index 330b9a5e3ae5..2830115bd6a3 100644 --- a/maths/special_numbers/proth_number.py +++ b/maths/special_numbers/proth_number.py @@ -63,6 +63,12 @@ def is_proth_number(number: int) -> bool: """ :param number: positive integer number :return: true if number is a Proth number, false otherwise + >>> is_proth_number(1) + False + >>> is_proth_number(2) + False + >>> is_proth_number(3) + True >>> is_proth_number(5) True >>> is_proth_number(34) @@ -84,6 +90,9 @@ def is_proth_number(number: int) -> bool: message = f"Input value of [{number=}] must be > 0" raise ValueError(message) + if number == 1: + return False + number -= 1 n = 0 while number % 2 == 0: @@ -107,7 +116,7 @@ def is_proth_number(number: int) -> bool: print(f"The {number}th Proth number: {value}") - for number in [3, 5, 9, 13, 49, 57, 193, 241, 163, 201]: + for number in [1, 2, 3, 5, 9, 13, 49, 57, 193, 241, 163, 201]: if is_proth_number(number): print(f"{number} is a Proth number") else: From 2159b09dc0437b245621c8eb136b60dbb57e93b9 Mon Sep 17 00:00:00 2001 From: Maxim Smolskiy Date: Mon, 8 Sep 2025 02:34:49 +0300 Subject: [PATCH 17/18] Update proth_number.py --- maths/special_numbers/proth_number.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/maths/special_numbers/proth_number.py b/maths/special_numbers/proth_number.py index 2830115bd6a3..3d9b605b6e4f 100644 --- a/maths/special_numbers/proth_number.py +++ b/maths/special_numbers/proth_number.py @@ -69,6 +69,8 @@ def is_proth_number(number: int) -> bool: False >>> is_proth_number(3) True + >>> is_proth_number(4) + False >>> is_proth_number(5) True >>> is_proth_number(34) From f707813209fa542d91e73aa5bf8989756e6ecf34 Mon Sep 17 00:00:00 2001 From: Maxim Smolskiy Date: Mon, 8 Sep 2025 02:35:33 +0300 Subject: [PATCH 18/18] Update proth_number.py --- 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 3d9b605b6e4f..b9b827b6a5a2 100644 --- a/maths/special_numbers/proth_number.py +++ b/maths/special_numbers/proth_number.py @@ -118,7 +118,7 @@ def is_proth_number(number: int) -> bool: print(f"The {number}th Proth number: {value}") - for number in [1, 2, 3, 5, 9, 13, 49, 57, 193, 241, 163, 201]: + for number in [1, 2, 3, 4, 5, 9, 13, 49, 57, 193, 241, 163, 201]: if is_proth_number(number): print(f"{number} is a Proth number") else: