Open In App

Check if product of first N natural numbers is divisible by their sum

Improve
Improve
Like Article
Like
Save
Share
Report

Given an integer N, the task is to check whether the product of first N natural numbers is divisible by the sum of first N natural numbers.
Examples: 

Input: N = 3 
Output: Yes 
Product = 1 * 2 * 3 = 6 
Sum = 1 + 2 + 3 = 6

Input: N = 6 
Output: No 

Naive Approach: 

In this approach, we initialize the product and sum variables to 1 and 0 respectively. Then, we use a loop to calculate the product and sum of the first N natural numbers. Finally, we check if the product is divisible by the sum by using the modulo operator and return the result.

Below is the implementation of the above approach: 

C++




// C++ implementation of the approach
#include <bits/stdc++.h>
using namespace std;
 
 
// Function that return true if the product
// of the first n natural numbers is divisible
// by the sum of first n natural numbers
bool isDivisible(int n)
{
    int product = 1, sum = 0;
    for (int i = 1; i <= n; i++) {
        product *= i;
        sum += i;
    }
    return (product % sum == 0);
}
 
 
// Driver code
int main()
{
    int n = 6;
    if (isDivisible(n))
        cout << "Yes";
    else
        cout << "No";
 
    return 0;
}


Java




// Java implementation of the approach
import java.util.*;
 
public class Main {
    // Function that return true if the product
    // of the first n natural numbers is divisible
    // by the sum of first n natural numbers
    public static boolean isDivisible(int n) {
        int product = 1, sum = 0;
        for (int i = 1; i <= n; i++) {
            product *= i;
            sum += i;
        }
        return (product % sum == 0);
    }
 
    // Driver code
    public static void main(String[] args) {
        int n = 6;
        if (isDivisible(n)) {
            System.out.println("Yes");
        } else {
            System.out.println("No");
        }
    }
}


Python3




# Python3 implementation of the approach
import math
 
# Function that return true if the product
# of the first n natural numbers is divisible
# by the sum of first n natural numbers
 
 
def isDivisible(n):
    product = 1
    sum = 0
    for i in range(1, n+1):
        product *= i
        sum += i
    return (product % sum == 0)
 
 
# Driver code
n = 6
if (isDivisible(n)):
    print("Yes")
else:
    print("No")


C#




using System;
 
class Program
{
 
  // Function that return true if the product
  // of the first n natural numbers is divisible
  // by the sum of first n natural numbers
  static bool IsDivisible(int n)
  {
    int product = 1, sum = 0;
    for (int i = 1; i <= n; i++)
    {
      product *= i;
      sum += i;
    }
    return (product % sum == 0);
  }
 
  // Driver code
  static void Main(string[] args)
  {
    int n = 6;
    if (IsDivisible(n))
      Console.WriteLine("Yes");
    else
      Console.WriteLine("No");
  }
}


Javascript




// Function that return true if the product
// of the first n natural numbers is divisible
// by the sum of first n natural numbers
function isDivisible(n) {
    let product = 1, sum = 0;
    for (let i = 1; i <= n; i++) {
        product *= i;
        sum += i;
    }
    return (product % sum === 0);
}
 
// Driver code
let n = 6;
if (isDivisible(n))
    console.log("Yes");
else
    console.log("No");


Output

No

Time Complexity: O(N)
Space Complexity: O(1)

Efficient Approach: We know that the sum and product of first N naturals are sum = (N * (N + 1)) / 2 and product = N! respectively. Now to check whether the product is divisible by the sum, we need to check if the remainder of the following equation is 0 or not. 

N! / (N *(N + 1) / 2) 
2 * (N – 1)! / N + 1 
i.e. every factor of (N + 1) should be in (2 * (N – 1)!). So, if (N + 1) is a prime then we are sure that the product is not divisible by the sum. 
So ultimately just check if (N + 1) is prime or not. 
 

Below is the implementation of the above approach: 

C++




// C++ implementation of the approach
#include <bits/stdc++.h>
using namespace std;
 
// Function that returns true if n is prime
bool isPrime(int n)
{
    // Corner cases
    if (n <= 1)
        return false;
    if (n <= 3)
        return true;
 
    // This is checked so that we can skip
    // middle five numbers in below loop
    if (n % 2 == 0 || n % 3 == 0)
        return false;
 
    for (int i = 5; i * i <= n; i = i + 6)
        if (n % i == 0 || n % (i + 2) == 0)
            return false;
 
    return true;
}
 
// Function that return true if the product
// of the first n natural numbers is divisible
// by the sum of first n natural numbers
bool isDivisible(int n)
{
    if (isPrime(n + 1))
        return false;
    return true;
}
 
// Driver code
int main()
{
    int n = 6;
    if (isDivisible(n))
        cout << "Yes";
    else
        cout << "No";
 
    return 0;
}


Java




// Java implementation of the approach
class GFG
{
     
// Function that returns true if n is prime
static boolean isPrime(int n)
{
    // Corner cases
    if (n <= 1)
        return false;
    if (n <= 3)
        return true;
 
    // This is checked so that we can skip
    // middle five numbers in below loop
    if (n % 2 == 0 || n % 3 == 0)
        return false;
 
    for (int i = 5; i * i <= n; i = i + 6)
        if (n % i == 0 || n % (i + 2) == 0)
            return false;
 
    return true;
}
 
// Function that return true if the product
// of the first n natural numbers is divisible
// by the sum of first n natural numbers
static boolean isDivisible(int n)
{
    if (isPrime(n + 1))
        return false;
    return true;
}
 
// Driver code
public static void main(String[] args)
{
    int n = 6;
    if (isDivisible(n))
        System.out.println("Yes");
    else
        System.out.println("No");
}
}
 
// This code is contributed by Code_Mech.


Python3




# Python 3 implementation of the approach
from math import sqrt
 
# Function that returns true if n is prime
def isPrime(n):
     
    # Corner cases
    if (n <= 1):
        return False
    if (n <= 3):
        return True
 
    # This is checked so that we can skip
    # middle five numbers in below loop
    if (n % 2 == 0 or n % 3 == 0):
        return False
 
    for i in range(5, int(sqrt(n)) + 1, 6):
        if (n % i == 0 or n % (i + 2) == 0):
            return False
 
    return True
 
# Function that return true if the product
# of the first n natural numbers is divisible
# by the sum of first n natural numbers
def isDivisible(n):
    if (isPrime(n + 1)):
        return False
    return True
 
# Driver code
if __name__ == '__main__':
    n = 6
    if (isDivisible(n)):
        print("Yes")
    else:
        print("No")
 
# This code is contributed by
# Surendra_Gangwar


C#




// C# implementation of the approach
using System;
 
class GFG
{
     
// Function that returns true if n is prime
static bool isPrime(int n)
{
    // Corner cases
    if (n <= 1)
        return false;
    if (n <= 3)
        return true;
 
    // This is checked so that we can skip
    // middle five numbers in below loop
    if (n % 2 == 0 || n % 3 == 0)
        return false;
 
    for (int i = 5; i * i <= n; i = i + 6)
        if (n % i == 0 || n % (i + 2) == 0)
            return false;
 
    return true;
}
 
// Function that return true if the product
// of the first n natural numbers is divisible
// by the sum of first n natural numbers
static bool isDivisible(int n)
{
    if (isPrime(n + 1))
        return false;
    return true;
}
 
// Driver code
static void Main()
{
    int n = 6;
    if (isDivisible(n))
        Console.WriteLine("Yes");
    else
        Console.WriteLine("No");
 
}
}
 
// This code is contributed by mits


PHP




<?php
// PHP implementation of the approach
 
// Function that returns true if n is prime
function isPrime($n)
{
    // Corner cases
    if ($n <= 1)
        return false;
    if ($n <= 3)
        return true;
 
    // This is checked so that we can skip
    // middle five numbers in below loop
    if ($n % 2 == 0 || $n % 3 == 0)
        return false;
 
    for ($i = 5; $i * $i <= $n; $i = $i + 6)
        if ($n % $i == 0 || $n % ($i + 2) == 0)
            return false;
 
    return true;
}
 
// Function that return true if the product
// of the first n natural numbers is divisible
// by the sum of first n natural numbers
function isDivisible($n)
{
    if (isPrime($n + 1))
        return false;
    return true;
}
 
// Driver code
$n = 6;
if (isDivisible($n))
    echo "Yes";
else
    echo "No";
 
// This code is contributed by Akanksha Rai
?>


Javascript




<script>
// javascript implementation of the approach
 
// Function that returns true if n is prime
function isPrime(n)
{
 
    // Corner cases
    if (n <= 1)
        return false;
    if (n <= 3)
        return true;
 
    // This is checked so that we can skip
    // middle five numbers in below loop
    if (n % 2 == 0 || n % 3 == 0)
        return false;
 
    for (i = 5; i * i <= n; i = i + 6)
        if (n % i == 0 || n % (i + 2) == 0)
            return false;
 
    return true;
}
 
// Function that return true if the product
// of the first n natural numbers is divisible
// by the sum of first n natural numbers
function isDivisible(n)
{
    if (isPrime(n + 1))
        return false;
    return true;
}
 
// Driver code
var n = 6;
if (isDivisible(n))
    document.write("Yes");
else
    document.write("No");
 
// This code is contributed by Princi Singh
</script>


Output: 

No

 

Time Complexity: O(sqrt(n))
Auxiliary Space: O(1)



Last Updated : 13 Apr, 2023
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads