diff --git a/maths/sum_of_arithmetic_series.py b/maths/sum_of_arithmetic_series.py index 3e381b8c2..b320fe477 100644 --- a/maths/sum_of_arithmetic_series.py +++ b/maths/sum_of_arithmetic_series.py @@ -1,23 +1,42 @@ -# DarkCoder -def sum_of_series(first_term: int, common_diff: int, num_of_terms: int) -> float: +# Reeka +def sum_of_ap_series(a: int, d: int, n: int) -> int: """ - Find the sum of n terms in an arithmetic progression. + Calculates the sum of the first 'n' terms of an arithmetic progression (AP) + series with the first term 'a' and common difference 'd'. - >>> sum_of_series(1, 1, 10) - 55.0 - >>> sum_of_series(1, 10, 100) - 49600.0 + Parameters: + a (int): The first term of the AP. + d (int): The common difference between terms. + n (int): The number of terms to sum. + + Returns: + int: The sum of the first 'n' terms of the AP. + + Examples: + >>> sum_of_ap_series(1, 1, 5) # Sum of first 5 natural numbers + 15 + >>> sum_of_ap_series(2, 3, 4) # Sum of 2, 5, 8, 11 + 26 + >>> sum_of_ap_series(5, 0, 3) # Sum of 5, 5, 5 + 15 + >>> sum_of_ap_series(1, 2, 1) # Single term AP series + 1 + >>> sum_of_ap_series(1, -1, 5) # Decreasing AP series + -5 + >>> sum_of_ap_series(1, 1, -5) # Negative 'n' should raise an error + Traceback (most recent call last): + ... + ValueError: Number of terms 'n' must be a positive integer + >>> sum_of_ap_series(1, 1, 0) # Zero terms should also raise an error + Traceback (most recent call last): + ... + ValueError: Number of terms 'n' must be a positive integer """ - total = (num_of_terms / 2) * (2 * first_term + (num_of_terms - 1) * common_diff) - # formula for sum of series - return total + if n <= 0: + raise ValueError("Number of terms 'n' must be a positive integer") + + # Formula for the sum of an AP series: S_n = n/2 * (2a + (n-1) * d) + return n * (2 * a + (n - 1) * d) // 2 -def main(): - print(sum_of_series(1, 1, 10)) - - -if __name__ == "__main__": - import doctest - - doctest.testmod() +# Reeka