Count of distinct remainders when N is divided by all the numbers from the range [1, N]

• Difficulty Level : Basic
• Last Updated : 03 May, 2021

Given an integer N, the task is to find the count of total distinct remainders which can be obtained when N is divided by every element from the range [1, N].
Examples:

Input: N = 5
Output:
5 % 1 = 0
5 % 2 = 1
5 % 3 = 2
5 % 4 = 1
5 % 5 = 0
The distinct remainders are 0, 1 and 2.
Input: N = 44
Output: 22

Approach: It can be easily observed that for even values of N the number of distinct remainders will be N / 2 and for odd values of N it will be 1 + ⌊N / 2⌋.
Below is the implementation of the above approach:

C++

 // C++ implementation of the approach#include using namespace std; // Function to return the count of distinct// remainders that can be obtained when// n is divided by every element// from the range [1, n]int distinctRemainders(int n){     // If n is even    if (n % 2 == 0)        return (n / 2);     // If n is odd    return (1 + (n / 2));} // Driver codeint main(){    int n = 5;     cout << distinctRemainders(n);     return 0;}

Java

 // Java implementation of the above approachclass GFG{ // Function to return the count of distinct// remainders that can be obtained when// n is divided by every element// from the range [1, n]static int distinctRemainders(int n){     // If n is even    if (n % 2 == 0)        return (n / 2);     // If n is odd    return (1 + (n / 2));} // Driver codepublic static void main(String[] args){    int n = 5;    System.out.println(distinctRemainders(n));}} // This code is contributed by Mohit Kumar

Python3

 # Python3 implementation of the approach # Function to return the count of distinct# remainders that can be obtained when# n is divided by every element# from the range [1, n]def distinctRemainders(n):         # If n is even    if n % 2 == 0:        return n//2         # If n is odd    return ((n//2)+1) # Driver codeif __name__=="__main__":     n = 5    print(distinctRemainders(n))

C#

 // C# implementation of the above approachusing System; class GFG{         // Function to return the count of distinct    // remainders that can be obtained when    // n is divided by every element    // from the range [1, n]    static int distinctRemainders(int n)    {             // If n is even        if (n % 2 == 0)            return (n / 2);             // If n is odd        return (1 + (n / 2));    }         // Driver code    public static void Main()    {        int n = 5;        Console.WriteLine(distinctRemainders(n));    }} // This code is contributed by AnkitRai01

Javascript


Output:
3

Time Complexity: O(1)

My Personal Notes arrow_drop_up