# Find sum of modulo K of first N natural number

• Difficulty Level : Basic
• Last Updated : 12 Sep, 2022

Given two integer N ans K, the task is to find sum of modulo K of first N natural numbers i.e 1%K + 2%K + ….. + N%K.

Examples :

```Input : N = 10 and K = 2.
Output : 5
Sum = 1%2 + 2%2 + 3%2 + 4%2 + 5%2 + 6%2 +
7%2 + 8%2 + 9%2 + 10%2
= 1 + 0 + 1 + 0 + 1 + 0 + 1 + 0 + 1 + 0
= 5.```
Recommended Practice

Method 1:

Iterate a variable i from 1 to N, evaluate and add i%K.

Below is the implementation of this approach:

## C++

 `// C++ program to find sum of``// modulo K of first N natural numbers.``#include ``using` `namespace` `std;` `// Return sum of modulo K of``// first N natural numbers.``int` `findSum(``int` `N, ``int` `K)``{``    ``int` `ans = 0;` `    ``// Iterate from 1 to N &&``    ``// evaluating and adding i % K.``    ``for` `(``int` `i = 1; i <= N; i++)``        ``ans += (i % K);` `    ``return` `ans;``}` `// Driver Program``int` `main()``{``    ``int` `N = 10, K = 2;``    ``cout << findSum(N, K) << endl;``    ``return` `0;``}`

## Java

 `// Java program to find sum of modulo``// K of first N natural numbers.``import` `java.io.*;` `class` `GFG {` `    ``// Return sum of modulo K of``    ``// first N natural numbers.``    ``static` `int` `findSum(``int` `N, ``int` `K)``    ``{``        ``int` `ans = ``0``;` `        ``// Iterate from 1 to N && evaluating``        ``// and adding i % K.``        ``for` `(``int` `i = ``1``; i <= N; i++)``            ``ans += (i % K);` `        ``return` `ans;``    ``}` `    ``// Driver program``    ``static` `public` `void` `main(String[] args)``    ``{``        ``int` `N = ``10``, K = ``2``;``        ``System.out.println(findSum(N, K));``    ``}``}` `// This code is contributed by vt_m.`

## Python3

 `# Python3 program to find sum``# of modulo K of first N``# natural numbers.` `# Return sum of modulo K of``# first N natural numbers.` `def` `findSum(N, K):``    ``ans ``=` `0``;` `    ``# Iterate from 1 to N &&``    ``# evaluating and adding i % K.``    ``for` `i ``in` `range``(``1``, N ``+` `1``):``        ``ans ``+``=` `(i ``%` `K);` `    ``return` `ans;` `# Driver Code``N ``=` `10``;``K ``=` `2``;``print``(findSum(N, K));` `# This code is contributed by mits`

## C#

 `// C# program to find sum of modulo``// K of first N natural numbers.``using` `System;` `class` `GFG {` `    ``// Return sum of modulo K of``    ``// first N natural numbers.``    ``static` `int` `findSum(``int` `N, ``int` `K)``    ``{``        ``int` `ans = 0;` `        ``// Iterate from 1 to N && evaluating``        ``// and adding i % K.``        ``for` `(``int` `i = 1; i <= N; i++)``            ``ans += (i % K);` `        ``return` `ans;``    ``}` `    ``// Driver program``    ``static` `public` `void` `Main()``    ``{``        ``int` `N = 10, K = 2;``        ``Console.WriteLine(findSum(N, K));``    ``}``}` `// This code is contributed by vt_m.`

## PHP

 ``

## Javascript

 ``

Output :

`5`

Time Complexity : O(N).

Auxiliary Space: O(1)

Method 2 :
Two cases arise in this method.
Case 1: When N < K, for each number i, N >= i >= 1, will give i as result when operate with modulo K. So, the required sum will be the sum of the first N natural number, N*(N+1)/2.
Case 2: When N >= K, then integers from 1 to K in natural number sequence will produce, 1, 2, 3, ….., K – 1, 0 as result when operate with modulo K. Similarly, from K + 1 to 2K, it will produce same result. So, the idea is to count how many numbers of times this sequence appears and multiply it with the sum of first K – 1 natural numbers.

Below is the implementation of this approach:

## C++

 `// C++ program to find sum of modulo``// K of first N natural numbers.``#include ``using` `namespace` `std;` `// Return sum of modulo K of``// first N natural numbers.``int` `findSum(``int` `N, ``int` `K)``{``    ``int` `ans = 0;` `    ``// Counting the number of times 1, 2, ..,``    ``// K-1, 0 sequence occurs.``    ``int` `y = N / K;` `    ``// Finding the number of elements left which``    ``// are incomplete of sequence Leads to Case 1 type.``    ``int` `x = N % K;` `    ``// adding multiplication of number of``    ``// times 1, 2, .., K-1, 0 sequence occurs``    ``// and sum of first k natural number and sequence``    ``// from case 1.``    ``ans = (K * (K - 1) / 2) * y + (x * (x + 1)) / 2;` `    ``return` `ans;``}` `// Driver program``int` `main()``{``    ``int` `N = 10, K = 2;``    ``cout << findSum(N, K) << endl;``    ``return` `0;``}`

## Java

 `// Java program to find sum of modulo``// K of first N natural numbers.``import` `java.io.*;` `class` `GFG {` `    ``// Return sum of modulo K of``    ``// first N natural numbers.``    ``static` `int` `findSum(``int` `N, ``int` `K)``    ``{``        ``int` `ans = ``0``;` `        ``// Counting the number of times 1, 2, ..,``        ``// K-1, 0 sequence occurs.``        ``int` `y = N / K;` `        ``// Finding the number of elements left which``        ``// are incomplete of sequence Leads to Case 1 type.``        ``int` `x = N % K;` `        ``// adding multiplication of number of times``        ``// 1, 2, .., K-1, 0 sequence occurs and sum``        ``// of first k natural number and sequence``        ``// from case 1.``        ``ans = (K * (K - ``1``) / ``2``) * y + (x * (x + ``1``)) / ``2``;` `        ``return` `ans;``    ``}` `    ``// Driver program``    ``static` `public` `void` `main(String[] args)``    ``{``        ``int` `N = ``10``, K = ``2``;``        ``System.out.println(findSum(N, K));``    ``}``}` `// This Code is contributed by vt_m.`

## Python3

 `# Python3 program to find sum of modulo``# K of first N natural numbers.` `# Return sum of modulo K of``# first N natural numbers.``def` `findSum(N, K):` `    ``ans ``=` `0``;` `    ``# Counting the number of times``    ``# 1, 2, .., K-1, 0 sequence occurs.``    ``y ``=` `N ``/` `K;` `    ``# Finding the number of elements``    ``# left which are incomplete of``    ``# sequence Leads to Case 1 type.``    ``x ``=` `N ``%` `K;` `    ``# adding multiplication of number``    ``# of times 1, 2, .., K-1, 0``    ``# sequence occurs and sum of``    ``# first k natural number and``    ``# sequence from case 1.``    ``ans ``=` `((K ``*` `(K ``-` `1``) ``/` `2``) ``*` `y ``+``                ``(x ``*` `(x ``+` `1``)) ``/` `2``);` `    ``return` `int``(ans);` `# Driver Code``N ``=` `10``;``K ``=` `2``;``print``(findSum(N, K));` `# This code is contributed by mits`

## C#

 `// C# program to find sum of modulo``// K of first N natural numbers.``using` `System;` `class` `GFG {` `    ``// Return sum of modulo K of``    ``// first N natural numbers.``    ``static` `int` `findSum(``int` `N, ``int` `K)``    ``{``        ``int` `ans = 0;` `        ``// Counting the number of times 1, 2, ..,``        ``// K-1, 0 sequence occurs.``        ``int` `y = N / K;` `        ``// Finding the number of elements left which``        ``// are incomplete of sequence Leads to Case 1 type.``        ``int` `x = N % K;` `        ``// adding multiplication of number of times``        ``// 1, 2, .., K-1, 0 sequence occurs and sum``        ``// of first k natural number and sequence``        ``// from case 1.``        ``ans = (K * (K - 1) / 2) * y + (x * (x + 1)) / 2;` `        ``return` `ans;``    ``}` `    ``// Driver program``    ``static` `public` `void` `Main()``    ``{``        ``int` `N = 10, K = 2;``        ``Console.WriteLine(findSum(N, K));``    ``}``}` `// This code is contributed by vt_m.`

## PHP

 ``

## Javascript

 ``

Output :

`5`

Time Complexity : O(1).

Auxiliary Space: O(1)

This article is contributed by Anuj Chauhan. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.

My Personal Notes arrow_drop_up