Open In App

Sum of all the multiples of 3 and 7 below N

Given a number N, the task is to find the sum of all the multiples of 3 and 7 below N
Note: A number must not repeat itself in the sum.

Examples:  

Input: N = 10 
Output: 25 
3 + 6 + 7 + 9 = 25

Input: N = 24 
Output: 105 
3 + 6 + 7 + 9 + 12 + 14 + 15 + 18 + 21 = 105 

Brute Force Approach:

A brute force approach to solve this problem would be to iterate through all the numbers from 1 to N-1, and check if each number is a multiple of 3 or 7. If it is, add it to the sum. However, we need to make sure that a number is not added to the sum multiple times. To do this, we can use a set to keep track of the numbers that have already been added.

Below is the implementation of the above approach:  




#include <bits/stdc++.h>
using namespace std;
 
// Function to find the sum of all
// multiples of 3 and 7 below N
long long sumMultiples(long long n)
{
    long long sum = 0;
    set<long long> multiples;
 
    for (long long i = 1; i < n; i++) {
        if (i % 3 == 0 || i % 7 == 0) {
            if (multiples.find(i) == multiples.end()) {
                sum += i;
                multiples.insert(i);
            }
        }
    }
 
    return sum;
}
 
// Driver code
int main()
{
    long long n = 24;
 
    cout << sumMultiples(n);
 
    return 0;
}




import java.util.HashSet;
import java.util.Set;
 
public class Main {
 
  // Function to find the sum of all
  // multiples of 3 and 7 below N
  static long sumMultiples(long n) {
    long sum = 0;
    Set<Long> multiples = new HashSet<>();
 
    for (long i = 1; i < n; i++) {
      if (i % 3 == 0 || i % 7 == 0) {
        if (!multiples.contains(i)) {
          sum += i;
          multiples.add(i);
        }
      }
    }
 
    return sum;
  }
 
  // Driver code
  public static void main(String[] args) {
    long n = 24;
 
    System.out.println(sumMultiples(n));
  }
}
 
// This code is contributed by Prajwal Kandekar




# Function to find the sum of all
# multiples of 3 and 7 below N
def sumMultiples(n):
    sum = 0
    multiples = set()
    for i in range(1, n):
        if i % 3 == 0 or i % 7 == 0:
            if i not in multiples:
                sum += i
                multiples.add(i)
    return sum
 
n = 24
print(sumMultiples(n))




using System;
using System.Collections.Generic;
 
class MainClass {
    // Function to find the sum of all multiples of 3 and 7
    // below N
    static long SumMultiples(long n)
    {
        long sum = 0;
        HashSet<long> multiples = new HashSet<long>();
 
        for (long i = 1; i < n; i++) {
            if (i % 3 == 0 || i % 7 == 0) {
                if (!multiples.Contains(i)) {
                    sum += i;
                    multiples.Add(i);
                }
            }
        }
 
        return sum;
    }
 
    // Driver code
    static void Main()
    {
        long n = 24;
        Console.WriteLine(SumMultiples(n));
    }
}
// This code is contributed by user_dtewbxkn77n




// Function to find the sum of all
// multiples of 3 and 7 below N
function sumMultiples(n) {
    let sum = 0;
    let multiples = new Set();
 
    for (let i = 1; i < n; i++) {
        if (i % 3 === 0 || i % 7 === 0) {
            if (!multiples.has(i)) {
                sum += i;
                multiples.add(i);
            }
        }
    }
 
    return sum;
}
 
// Driver code
let n = 24;
 
console.log(sumMultiples(n));

Output
105

Time Complexity: O(N), since we need to iterate through all the numbers from 1 to N-1.

Auxiliary Space: O(N), since the set can potentially store all the multiples.

Approach:  

The formula for the sum of an AP series is : 
n * ( a + l ) / 2 
Where n is the number of terms, a is the starting term, and l is the last term. 
 

Below is the implementation of the above approach:  




// C++ program to find the sum of all
// multiples of 3 and 7 below N
 
#include <bits/stdc++.h>
using namespace std;
 
// Function to find sum of AP series
long long sumAP(long long n, long long d)
{
    // Number of terms
    n /= d;
 
    return (n) * (1 + n) * d / 2;
}
 
// Function to find the sum of all
// multiples of 3 and 7 below N
long long sumMultiples(long long n)
{
    // Since, we need the sum of
    // multiples less than N
    n--;
 
    return sumAP(n, 3) + sumAP(n, 7) - sumAP(n, 21);
}
 
// Driver code
int main()
{
    long long n = 24;
 
    cout << sumMultiples(n);
 
    return 0;
}




// Java program to find the sum of all
// multiples of 3 and 7 below N
import java.util.*;
 
class solution
{
 
// Function to find sum of AP series
static long sumAP(long n, long d)
{
    // Number of terms
    n /= d;
 
    return (n) * (1 + n) * d / 2;
}
 
// Function to find the sum of all
// multiples of 3 and 7 below N
static long sumMultiples(long n)
{
    // Since, we need the sum of
    // multiples less than N
    n--;
 
    return sumAP(n, 3) + sumAP(n, 7) - sumAP(n, 21);
}
 
// Driver code
public static void main(String args[])
{
    long n = 24;
 
    System.out.println(sumMultiples(n));
 
 }
}
 
//This code is contributed by Surendra_Gangwar




# Python3 program to find the sum of
# all multiples of 3 and 7 below N
 
# Function to find sum of AP series
def sumAP(n, d):
     
    # Number of terms
    n = int(n / d);
 
    return (n) * (1 + n) * (d / 2);
 
# Function to find the sum of all
# multiples of 3 and 7 below N
def sumMultiples(n):
 
    # Since, we need the sum of
    # multiples less than N
    n -= 1;
 
    return int(sumAP(n, 3) +
               sumAP(n, 7) -
               sumAP(n, 21));
 
# Driver code
n = 24;
 
print(sumMultiples(n));
 
# This code is contributed
# by mits




// C# program to find the sum of all
// multiples of 3 and 7 below N
using System;
 
class GFG
{
 
// Function to find sum of AP series
static long sumAP(long n, long d)
{
    // Number of terms
    n /= d;
 
    return (n) * (1 + n) * d / 2;
}
 
// Function to find the sum of all
// multiples of 3 and 7 below N
static long sumMultiples(long n)
{
    // Since, we need the sum of
    // multiples less than N
    n--;
 
    return sumAP(n, 3) + sumAP(n, 7) -
                         sumAP(n, 21);
}
 
// Driver code
static public void Main(String []args)
{
    long n = 24;
 
    Console.WriteLine(sumMultiples(n));
}
}
 
// This code is contributed
// by Arnab Kundu




<?php
// PHP program to find the sum of all
// multiples of 3 and 7 below N
 
// Function to find sum of AP series
function sumAP($n, $d)
{
    // Number of terms
    $n = (int)($n / $d);
 
    return ($n) * (1 + $n) * ($d / 2);
}
 
// Function to find the sum of all
// multiples of 3 and 7 below N
function sumMultiples($n)
{
    // Since, we need the sum of
    // multiples less than N
    $n--;
 
    return sumAP($n, 3) +
           sumAP($n, 7) - sumAP($n, 21);
}
 
// Driver code
$n = 24;
 
echo sumMultiples($n);
 
// This code is contributed
// by Akanksha Rai
?>




<script>
 
// JavaScript program to find the sum of all
// multiples of 3 and 7 below N
 
// Function to find sum of AP series
function sumAP(n, d)
{
     
    // Number of terms
    n = parseInt(n / d);
 
    return (n) * (1 + n) * (d / 2);
}
 
// Function to find the sum of all
// multiples of 3 and 7 below N
function sumMultiples(n)
{
     
    // Since, we need the sum of
    // multiples less than N
    n--;
 
    return sumAP(n, 3) +
           sumAP(n, 7) -
           sumAP(n, 21);
}
 
// Driver code
let n = 24;
 
document.write(sumMultiples(n));
 
// This code is contributed by mohan1240760
 
</script>

Output
105

Time complexity: O(1), since there is no loop or recursion.

Auxiliary Space: O(1), since no extra space has been taken.


Article Tags :