Sum of first N natural numbers which are divisible by X or Y - GeeksforGeeks

11 May, 2022
Given a number N. Given two numbers X and Y, the task is to find the sum of all those numbers from 1 to N that are divisible by X or by Y.Examples:  
Input : N = 20
Output : 98

Input : N = 14 
Output : 45
Approach: To solve the problem, follow the below steps:->Find the sum of numbers that are divisible by X upto N. Denote it by S1. ->Find the sum of numbers that are divisible by Y upto N. Denote it by S2. ->Find the sum of numbers that are divisible by both X and Y (X*Y) upto N. Denote it by S3. ->The final answer will be S1 + S2 – S3.In order to find the sum, we can use the general formula of A.P. which is:  
Sn = (n/2) * {2*a + (n-1)*d}
For S1: The total numbers that will be divisible by X upto N will be N/X and the sum will be:  
Hence, 
S1 = ((N/X)/2) * (2 * X + (N/X - 1) * X)
For S2: The total numbers that will be divisible by Y upto N will be N/Y and the sum will be:  
Hence, 
S2 = ((N/Y)/2) * (2 * Y + (N/Y - 1) * Y)
For S3: The total numbers that will be divisible by both X and Y upto N will be N/(X*Y) and the sum will be:  
Hence, 
S2 = ((N/(X*Y))/2) * (2 * Y + (N/(X*Y) - 1) * (X*Y))
Therefore, the result will be:  
S = S1 + S2 - S3
Below is the implementation of the above approach:  
C++
Java
Python3
C#
PHP
Javascript
C
// C++ program to find sum of numbers from// 1 to N which are divisible by X or Y#include <bits/stdc++.h>using namespace std; // Function to calculate the sum// of numbers divisible by X or Yint sum(int N, int X, int Y){    int S1, S2, S3;     S1 = ((N / X)) * (2 * X + (N / X - 1) * X) / 2;    S2 = ((N / Y)) * (2 * Y + (N / Y - 1) * Y) / 2;    S3 = ((N / (X * Y))) * (2 * (X * Y)                      + (N / (X * Y) - 1) * (X * Y))/ 2;     return S1 + S2 - S3;} // Driver codeint main(){    int N = 14;    int X = 3, Y = 5;     cout << sum(N, X, Y);     return 0;}
// Java program to find sum of numbers from// 1 to N which are divisible by X or Y public class GFG{         // Function to calculate the sum    // of numbers divisible by X or Y    static int sum(int N, int X, int Y)    {        int S1, S2, S3;             S1 = ((N / X)) * (2 * X + (N / X - 1) * X) / 2;        S2 = ((N / Y)) * (2 * Y + (N / Y - 1) * Y) / 2;        S3 = ((N / (X * Y))) * (2 * (X * Y)                          + (N / (X * Y) - 1) * (X * Y))/ 2;             return S1 + S2 - S3;    }         // Driver code    public static void main(String []args)    {        int N = 14;        int X = 3, Y = 5;             System.out.println(sum(N, X, Y));         }    // This code is contributed by Ryuga}
# Python 3 program to find sum of numbers from# 1 to N which are divisible by X or Yfrom math import ceil, floor # Function to calculate the sum# of numbers divisible by X or Ydef sum(N, X, Y):    S1 = floor(floor(N / X) * floor(2 * X +               floor(N / X - 1) * X) / 2)    S2 = floor(floor(N / Y)) * floor(2 * Y +               floor(N / Y - 1) * Y) / 2    S3 = floor(floor(N / (X * Y))) * floor (2 * (X * Y) +               floor(N / (X * Y) - 1) * (X * Y))/ 2     return S1 + S2 - S3 # Driver codeif __name__ == '__main__':    N = 14    X = 3    Y = 5     print(int(sum(N, X, Y))) # This code is contributed by# Surendra_Gangwar
// C# program to find sum of numbers from// 1 to N which are divisible by X or Y  using System;public class GFG{          // Function to calculate the sum    // of numbers divisible by X or Y    static int sum(int N, int X, int Y)    {        int S1, S2, S3;              S1 = ((N / X)) * (2 * X + (N / X - 1) * X) / 2;        S2 = ((N / Y)) * (2 * Y + (N / Y - 1) * Y) / 2;        S3 = ((N / (X * Y))) * (2 * (X * Y)                          + (N / (X * Y) - 1) * (X * Y))/ 2;              return S1 + S2 - S3;    }          // Driver code    public static void Main()    {        int N = 14;        int X = 3, Y = 5;              Console.Write(sum(N, X, Y));          }     }
<?php// PHP program to find sum of numbers from// 1 to N which are divisible by X or Y// Function to calculate the sum// of numbers divisible by X or Yfunction sum($N, $X, $Y){    $S1; $S2; $S3;     $S1 = floor(((int)$N / $X)) * (2 * $X + (int)((int)$N / $X - 1) * $X) / 2;    $S2 = floor(((int)$N / $Y)) * (2 * $Y + (int)((int)$N / $Y - 1) * $Y) / 2;    $S3 = floor(((int)$N / ($X * $Y))) * (2 * ($X * $Y)                    + ((int)$N / ($X * $Y) - 1) * (int)($X * $Y))/ 2;     return ceil($S1 + ($S2 - $S3));} // Driver code    $N = 14;    $X = 3;    $Y = 5;     echo  sum($N, $X, $Y); #This code is contributed by ajit.?>
<script>// javascript program to find sum of numbers from// 1 to N which are divisible by X or Y      // Function to calculate the sum// of numbers divisible by X or Yfunction sum(N , X , Y){    var S1, S2, S3;     S1 = (parseInt(N / X)) * (2 * X + parseInt(N / X - 1) * X) / 2;    S2 = (parseInt(N / Y)) * (2 * Y + parseInt(N / Y - 1) * Y) / 2;    S3 = (parseInt(N / (X * Y))) * (2 * (X * Y)                      + parseInt(N / (X * Y) - 1) * (X * Y))/ 2;     return S1 + S2 - S3;} // Driver codevar N = 14;var X = 3, Y = 5; document.write(sum(N, X, Y)); // This code is contributed by Princi Singh</script>
// C program to find sum of numbers from// 1 to N which are divisible by X or Y#include <stdio.h> // Function to calculate the sum// of numbers divisible by X or Yint sum(int N, int X, int Y){    int S1, S2, S3;     S1 = ((N / X)) * (2 * X + (N / X - 1) * X) / 2;    S2 = ((N / Y)) * (2 * Y + (N / Y - 1) * Y) / 2;    S3 = ((N / (X * Y))) * (2 * (X * Y) + (N / (X * Y) - 1) * (X * Y))/ 2;    return S1 + S2 - S3;} // Driver codeint main(){    int N = 14;    int X = 3, Y = 5;    printf("%d ",sum(N, X, Y));    return 0;}
45
 
Time Complexity : O(1) 
ankthon
ukasp
jit_t
SURENDRA_GANGWAR
VishalBachchas
princi singh
kothavvsaakash
arithmetic progression
number-theory
Technical Scripter 2018
C++ Programs
Mathematical
Technical Scripter
number-theory
Mathematical
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Shallow Copy and Deep Copy in C++
Passing a function as a parameter in C++
cin in C++
C++ Program to check if a given String is Palindrome or not
Program to implement Singly Linked List in C++ using class
Program for Fibonacci numbers
Write a program to print all permutations of a given string
C++ Data Types
Set in C++ Standard Template Library (STL)
Coin Change | DP-7