From b6700beae37814ce6182f2d2d57974acef4ee95e Mon Sep 17 00:00:00 2001 From: Jordan Rinder Date: Sat, 9 Oct 2021 10:15:00 -0400 Subject: [PATCH 1/2] Add Sylvester's sequence to maths --- maths/sylvester_sequence.py | 45 +++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 maths/sylvester_sequence.py diff --git a/maths/sylvester_sequence.py b/maths/sylvester_sequence.py new file mode 100644 index 000000000000..a67e64fda027 --- /dev/null +++ b/maths/sylvester_sequence.py @@ -0,0 +1,45 @@ +""" + +Calculates the nth number in Sylvester's sequence + +Source: + https://en.wikipedia.org/wiki/Sylvester%27s_sequence + +""" + + +def sylvester(number: int) -> int: + """ + :param number: nth number to calculate in the sequence + :return: the nth number in Sylvester's sequence + + >>> sylvester(8) + 113423713055421844361000443 + + >>> sylvester(-1) + Traceback (most recent call last): + ... + ValueError: The input value of [n=-1] has to be > 0 + + >>> sylvester(8.0) + Traceback (most recent call last): + ... + AssertionError: The input value of [n=8.0] is not an integer + """ + assert isinstance(number, int), f"The input value of [n={number}] is not an integer" + + if number == 1: + return 2 + elif number < 1: + raise ValueError(f"The input value of [n={number}] has to be > 0") + else: + num = sylvester(number - 1) + lower = num - 1 + upper = num + return lower * upper + 1 + + +if __name__ == "__main__": + + number = 8 + print(f"The 8th number in Sylvester's sequence: {sylvester(number)}") From 0a5ce4af3122a9c4cfe3946a10de7fbc8cdb8e6e Mon Sep 17 00:00:00 2001 From: Christian Clauss Date: Sun, 10 Oct 2021 19:56:56 +0200 Subject: [PATCH 2/2] Update sylvester_sequence.py --- maths/sylvester_sequence.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/maths/sylvester_sequence.py b/maths/sylvester_sequence.py index a67e64fda027..0cd99affe046 100644 --- a/maths/sylvester_sequence.py +++ b/maths/sylvester_sequence.py @@ -40,6 +40,4 @@ def sylvester(number: int) -> int: if __name__ == "__main__": - - number = 8 - print(f"The 8th number in Sylvester's sequence: {sylvester(number)}") + print(f"The 8th number in Sylvester's sequence: {sylvester(8)}")