From cc21ea1f420b8163d9f505adaeb2a15f8631a460 Mon Sep 17 00:00:00 2001 From: Utsav1999 Date: Tue, 28 Jul 2020 04:45:23 +0530 Subject: [PATCH 1/5] Added Python Program to Check Perfet Number --- maths/perfect_number.py | 44 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 maths/perfect_number.py diff --git a/maths/perfect_number.py b/maths/perfect_number.py new file mode 100644 index 000000000000..0c52d04c40a8 --- /dev/null +++ b/maths/perfect_number.py @@ -0,0 +1,44 @@ +""" + == Perfect Number == + In number theory, a perfect number is a + positive integer that is equal to the sum + of its positive divisors, excluding the + number itself. + >>> For 6 ==> divisors[1, 2, 3, 6] + Excluding 6 sum(divisors) = 1 + 2 + 3 = 6 + So, 6 is a Perfect Number + Other examples of Perfect Numbers: 28, 486, ... + +""" + + +def perfect(number: int) -> bool: + divisors = [] + for i in range(1, ((number // 2) + 1)): + """ + starting from 1 as divion by 0 + will raise error. + A number at most can be divisible + by the half of the number except + the number itself + >>> 6 at most can be divisible by 3 + except 6 itself + """ + + if (number % i) == 0: + divisors.append(i) + + if sum(divisors) == number: + return True + else: + return False + + +if __name__ == "__main__": + print("Program to check whether a number is a Perfect number or not.......") + number = int(input("Enter number: ")) + check = perfect(number) + if check: + print("{} is a Perfect Number.".format(number)) + else: + print("{} is not a Perfect Number.".format(number)) From fb23a6c317ac94baa2fb8db54bb733f5759fac33 Mon Sep 17 00:00:00 2001 From: Utsav1999 Date: Tue, 28 Jul 2020 04:57:50 +0530 Subject: [PATCH 2/5] CodeSpell Error Fix - 1 --- maths/perfect_number.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/maths/perfect_number.py b/maths/perfect_number.py index 0c52d04c40a8..449238b8c306 100644 --- a/maths/perfect_number.py +++ b/maths/perfect_number.py @@ -16,7 +16,7 @@ def perfect(number: int) -> bool: divisors = [] for i in range(1, ((number // 2) + 1)): """ - starting from 1 as divion by 0 + starting from 1 as division by 0 will raise error. A number at most can be divisible by the half of the number except From 0c6adf13244ddc93eaa3f8419eca1f80ebaeaec7 Mon Sep 17 00:00:00 2001 From: Utsav1999 Date: Tue, 28 Jul 2020 12:57:10 +0530 Subject: [PATCH 3/5] Build Error Fix - 1 --- maths/perfect_number.py | 38 ++++++++++++++++++++++---------------- 1 file changed, 22 insertions(+), 16 deletions(-) diff --git a/maths/perfect_number.py b/maths/perfect_number.py index 449238b8c306..f7c9c7b07a7e 100644 --- a/maths/perfect_number.py +++ b/maths/perfect_number.py @@ -1,14 +1,15 @@ """ - == Perfect Number == - In number theory, a perfect number is a - positive integer that is equal to the sum - of its positive divisors, excluding the - number itself. - >>> For 6 ==> divisors[1, 2, 3, 6] - Excluding 6 sum(divisors) = 1 + 2 + 3 = 6 - So, 6 is a Perfect Number - Other examples of Perfect Numbers: 28, 486, ... +== Perfect Number == +In number theory, a perfect number is a positive integer +that is equal to the sum of its positive divisors, excluding +the number itself. +For 6 ==> divisors[1, 2, 3, 6] +Excluding 6 sum(divisors) = 1 + 2 + 3 = 6 +So, 6 is a Perfect Number +Other examples of Perfect Numbers: 28, 486, ... + +https://en.wikipedia.org/wiki/Perfect_number """ @@ -21,8 +22,17 @@ def perfect(number: int) -> bool: A number at most can be divisible by the half of the number except the number itself - >>> 6 at most can be divisible by 3 - except 6 itself + 6 at most can be divisible by 3 + except 6 itself + """ + + """ + >>> perfect(27) + False + >>> perfect(28) + True + >>> perfect(29) + False """ if (number % i) == 0: @@ -37,8 +47,4 @@ def perfect(number: int) -> bool: if __name__ == "__main__": print("Program to check whether a number is a Perfect number or not.......") number = int(input("Enter number: ")) - check = perfect(number) - if check: - print("{} is a Perfect Number.".format(number)) - else: - print("{} is not a Perfect Number.".format(number)) + print(f"{number} is {'' if perfect(number) else 'not'} a Perfect Number.") From b0e9317be25f1c8f74913c2064861182438e5264 Mon Sep 17 00:00:00 2001 From: Utsav1999 Date: Tue, 28 Jul 2020 13:14:46 +0530 Subject: [PATCH 4/5] Made suggested changes --- maths/perfect_number.py | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/maths/perfect_number.py b/maths/perfect_number.py index f7c9c7b07a7e..4bdcd6855016 100644 --- a/maths/perfect_number.py +++ b/maths/perfect_number.py @@ -16,6 +16,15 @@ def perfect(number: int) -> bool: divisors = [] for i in range(1, ((number // 2) + 1)): + """ + >>> perfect(27) + False + >>> perfect(28) + True + >>> perfect(29) + False + """ + """ starting from 1 as division by 0 will raise error. @@ -26,15 +35,6 @@ def perfect(number: int) -> bool: except 6 itself """ - """ - >>> perfect(27) - False - >>> perfect(28) - True - >>> perfect(29) - False - """ - if (number % i) == 0: divisors.append(i) @@ -47,4 +47,4 @@ def perfect(number: int) -> bool: if __name__ == "__main__": print("Program to check whether a number is a Perfect number or not.......") number = int(input("Enter number: ")) - print(f"{number} is {'' if perfect(number) else 'not'} a Perfect Number.") + print(f"{number} is {'' if perfect(number) else 'not '} a Perfect Number.") From c02b24ef7c92e733b0bfc5897989cbef92d3615f Mon Sep 17 00:00:00 2001 From: Christian Clauss Date: Tue, 28 Jul 2020 09:58:55 +0200 Subject: [PATCH 5/5] Use generator expression --- maths/perfect_number.py | 52 ++++++++++++++--------------------------- 1 file changed, 18 insertions(+), 34 deletions(-) diff --git a/maths/perfect_number.py b/maths/perfect_number.py index 4bdcd6855016..3de742399f62 100644 --- a/maths/perfect_number.py +++ b/maths/perfect_number.py @@ -1,11 +1,10 @@ """ == Perfect Number == -In number theory, a perfect number is a positive integer -that is equal to the sum of its positive divisors, excluding -the number itself. -For 6 ==> divisors[1, 2, 3, 6] -Excluding 6 sum(divisors) = 1 + 2 + 3 = 6 -So, 6 is a Perfect Number +In number theory, a perfect number is a positive integer that is equal to the sum of +its positive divisors, excluding the number itself. +For example: 6 ==> divisors[1, 2, 3, 6] + Excluding 6, the sum(divisors) is 1 + 2 + 3 = 6 + So, 6 is a Perfect Number Other examples of Perfect Numbers: 28, 486, ... @@ -14,37 +13,22 @@ def perfect(number: int) -> bool: - divisors = [] - for i in range(1, ((number // 2) + 1)): - """ - >>> perfect(27) - False - >>> perfect(28) - True - >>> perfect(29) - False - """ + """ + >>> perfect(27) + False + >>> perfect(28) + True + >>> perfect(29) + False - """ - starting from 1 as division by 0 - will raise error. - A number at most can be divisible - by the half of the number except - the number itself - 6 at most can be divisible by 3 - except 6 itself - """ - - if (number % i) == 0: - divisors.append(i) - - if sum(divisors) == number: - return True - else: - return False + Start from 1 because dividing by 0 will raise ZeroDivisionError. + A number at most can be divisible by the half of the number except the number + itself. For example, 6 is at most can be divisible by 3 except by 6 itself. + """ + return sum(i for i in range(1, ((number // 2) + 1)) if number % i == 0) == number if __name__ == "__main__": print("Program to check whether a number is a Perfect number or not.......") - number = int(input("Enter number: ")) + number = int(input("Enter number: ").strip()) print(f"{number} is {'' if perfect(number) else 'not '} a Perfect Number.")