From 5779a80c237fc6eb221a45d71b916ad642ff97c0 Mon Sep 17 00:00:00 2001 From: kostogls <38495639+kostogls@users.noreply.github.com> Date: Wed, 22 Jan 2020 15:17:28 +0200 Subject: [PATCH 1/5] Adding Armstrong number --- maths/armstrong_numbers.py | 48 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) create mode 100644 maths/armstrong_numbers.py diff --git a/maths/armstrong_numbers.py b/maths/armstrong_numbers.py new file mode 100644 index 000000000000..0ec066baa6d8 --- /dev/null +++ b/maths/armstrong_numbers.py @@ -0,0 +1,48 @@ +""" An Armstrong number is a number that is equal to the sum of the cubes of its digits. +For example, 370 is an Armstrong number because 3*3*3 + 7*7*7 + 0*0*0 = 370. +An Armstrong number is often called Narcissistic number. +""" + + +def armstrong_number(n): + """ + This function checks if a number is Armstrong or not. + + >>> armstrong_number(153) + 153 is an Armstrong number + >>> armstrong_number(200) + 200 is not an Armstrong number + >>> armstrong_number(1634) + 1634 is an Armstrong number + """ + # Initialization of sum and number of digits. + sum = 0 + number_of_digits = 0 + temp = n + # Calculation of digits of the number + while temp > 0: + number_of_digits += 1 + temp //= 10 + # Dividing number into separate digits and find Armstrong number + temp = n + while temp > 0: + rem = temp % 10 + sum = sum + (rem ** number_of_digits) + temp //= 10 + if n == sum: + print(n, "is an Armstrong number") + else: + print(n, "is not an Armstrong number") + + +# In main function user inputs a number to find out if it's an Armstrong or not. Th function armstrong_number is called. +def main(): + num = int(input("Enter a number to check if it is Armstrong or not: ").strip()) + armstrong_number(num) + + +if __name__ == '__main__': + main() + import doctest + + doctest.testmod() From 7cb66ff08883f14864a12b3937e21e33f6523f8c Mon Sep 17 00:00:00 2001 From: kostogls <38495639+kostogls@users.noreply.github.com> Date: Wed, 22 Jan 2020 15:40:51 +0200 Subject: [PATCH 2/5] Update armstrong_numbers --- maths/armstrong_numbers.py | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/maths/armstrong_numbers.py b/maths/armstrong_numbers.py index 0ec066baa6d8..f6455d3f70b3 100644 --- a/maths/armstrong_numbers.py +++ b/maths/armstrong_numbers.py @@ -9,11 +9,11 @@ def armstrong_number(n): This function checks if a number is Armstrong or not. >>> armstrong_number(153) - 153 is an Armstrong number + True >>> armstrong_number(200) - 200 is not an Armstrong number + False >>> armstrong_number(1634) - 1634 is an Armstrong number + True """ # Initialization of sum and number of digits. sum = 0 @@ -30,15 +30,19 @@ def armstrong_number(n): sum = sum + (rem ** number_of_digits) temp //= 10 if n == sum: - print(n, "is an Armstrong number") - else: - print(n, "is not an Armstrong number") + return True + + return False # In main function user inputs a number to find out if it's an Armstrong or not. Th function armstrong_number is called. def main(): num = int(input("Enter a number to check if it is Armstrong or not: ").strip()) armstrong_number(num) + if armstrong_number(num): + print(num, " is an Armstrong number") + else: + print(num, " is not an Armstrong number") if __name__ == '__main__': From 8b030842adcd17effea63e42976c5fb896d12690 Mon Sep 17 00:00:00 2001 From: kostogls <38495639+kostogls@users.noreply.github.com> Date: Wed, 22 Jan 2020 15:52:44 +0200 Subject: [PATCH 3/5] Update armstrong_numbers.py --- maths/armstrong_numbers.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/maths/armstrong_numbers.py b/maths/armstrong_numbers.py index f6455d3f70b3..61e546cbb9d8 100644 --- a/maths/armstrong_numbers.py +++ b/maths/armstrong_numbers.py @@ -29,10 +29,7 @@ def armstrong_number(n): rem = temp % 10 sum = sum + (rem ** number_of_digits) temp //= 10 - if n == sum: - return True - - return False + return n == sum # In main function user inputs a number to find out if it's an Armstrong or not. Th function armstrong_number is called. @@ -50,3 +47,4 @@ def main(): import doctest doctest.testmod() + From 6025799e71d4dce830c7841983621f45c1b199bc Mon Sep 17 00:00:00 2001 From: kostogls <38495639+kostogls@users.noreply.github.com> Date: Wed, 22 Jan 2020 16:34:02 +0200 Subject: [PATCH 4/5] Update armstrong_numbers.py --- maths/armstrong_numbers.py | 53 +++++++++++++++++++++----------------- 1 file changed, 29 insertions(+), 24 deletions(-) diff --git a/maths/armstrong_numbers.py b/maths/armstrong_numbers.py index 61e546cbb9d8..8b31fdc43aa9 100644 --- a/maths/armstrong_numbers.py +++ b/maths/armstrong_numbers.py @@ -4,7 +4,7 @@ """ -def armstrong_number(n): +def armstrong_number(n: int) -> bool: """ This function checks if a number is Armstrong or not. @@ -14,37 +14,42 @@ def armstrong_number(n): False >>> armstrong_number(1634) True - """ - # Initialization of sum and number of digits. - sum = 0 - number_of_digits = 0 - temp = n - # Calculation of digits of the number - while temp > 0: - number_of_digits += 1 - temp //= 10 - # Dividing number into separate digits and find Armstrong number - temp = n - while temp > 0: - rem = temp % 10 - sum = sum + (rem ** number_of_digits) - temp //= 10 - return n == sum + >>> armstrong_number(0) + False + >>> armstrong_number(-1) + False + >>> armstrong_number(1.2) + False + """ + if isinstance(n, float) or n < 1: + return False + else: + # Initialization of sum and number of digits. + sum = 0 + number_of_digits = 0 + temp = n + # Calculation of digits of the number + while temp > 0: + number_of_digits += 1 + temp //= 10 + # Dividing number into separate digits and find Armstrong number + temp = n + while temp > 0: + rem = temp % 10 + sum += (rem ** number_of_digits) + temp //= 10 + return n == sum # In main function user inputs a number to find out if it's an Armstrong or not. Th function armstrong_number is called. def main(): - num = int(input("Enter a number to check if it is Armstrong or not: ").strip()) - armstrong_number(num) - if armstrong_number(num): - print(num, " is an Armstrong number") - else: - print(num, " is not an Armstrong number") + num = int(input("Enter an integer number to check if it is Armstrong or not: ").strip()) + print(f"{num} is {'' if armstrong_number(num) else 'not '}an Armstrong number.") if __name__ == '__main__': - main() import doctest doctest.testmod() + main() From 8acfe7977dc024f34db1ec0799ea4c980376b7e1 Mon Sep 17 00:00:00 2001 From: Christian Clauss Date: Wed, 22 Jan 2020 16:35:09 +0100 Subject: [PATCH 5/5] Update armstrong_numbers.py --- maths/armstrong_numbers.py | 66 +++++++++++++++++++------------------- 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/maths/armstrong_numbers.py b/maths/armstrong_numbers.py index 8b31fdc43aa9..94acb35c33f6 100644 --- a/maths/armstrong_numbers.py +++ b/maths/armstrong_numbers.py @@ -1,4 +1,5 @@ -""" An Armstrong number is a number that is equal to the sum of the cubes of its digits. +""" +An Armstrong number is a number that is equal to the sum of the cubes of its digits. For example, 370 is an Armstrong number because 3*3*3 + 7*7*7 + 0*0*0 = 370. An Armstrong number is often called Narcissistic number. """ @@ -6,39 +7,39 @@ def armstrong_number(n: int) -> bool: """ - This function checks if a number is Armstrong or not. - - >>> armstrong_number(153) - True - >>> armstrong_number(200) - False - >>> armstrong_number(1634) - True - >>> armstrong_number(0) - False - >>> armstrong_number(-1) - False - >>> armstrong_number(1.2) - False + This function checks if a number is Armstrong or not. + + >>> armstrong_number(153) + True + >>> armstrong_number(200) + False + >>> armstrong_number(1634) + True + >>> armstrong_number(0) + False + >>> armstrong_number(-1) + False + >>> armstrong_number(1.2) + False """ - if isinstance(n, float) or n < 1: + if not isinstance(n, int) or n < 1: return False - else: - # Initialization of sum and number of digits. - sum = 0 - number_of_digits = 0 - temp = n - # Calculation of digits of the number - while temp > 0: - number_of_digits += 1 - temp //= 10 - # Dividing number into separate digits and find Armstrong number - temp = n - while temp > 0: - rem = temp % 10 - sum += (rem ** number_of_digits) - temp //= 10 - return n == sum + + # Initialization of sum and number of digits. + sum = 0 + number_of_digits = 0 + temp = n + # Calculation of digits of the number + while temp > 0: + number_of_digits += 1 + temp //= 10 + # Dividing number into separate digits and find Armstrong number + temp = n + while temp > 0: + rem = temp % 10 + sum += (rem ** number_of_digits) + temp //= 10 + return n == sum # In main function user inputs a number to find out if it's an Armstrong or not. Th function armstrong_number is called. @@ -52,4 +53,3 @@ def main(): doctest.testmod() main() -