Open In App

Program to find the product of a number with a Mersenne Number

Improve
Improve
Like Article
Like
Save
Share
Report

Given an integer N and a Mersenne number M, the task is to print their product without using the ‘*’ operator.
Note: Mersenne numbers are those numbers which are one less than a power of two.

Examples:

Input: N = 4, M = 15
Output: 60

Input: N = 9, M = 31
Output: 279

 

Approach: The given problem can be solved based on the following observations: 

Suppose M can be represented as 2X – 1, then the product of N with M can be represented as N · 2X – N.

Therefore, product of any Mersenne number with any number N can be represented as (N << log2(M+1)) – N.

Below is the implementation of the above approach:

C++




// C++ implementation of above approach
#include <bits/stdc++.h>
using namespace std;
 
// Function to find product of a
// Mersenne number with another number
long multiplyByMersenne(long N, long M)
{
    // Stores the power of
    // 2 of integer M + 1
    long x = log2(M + 1);
 
    // Return the product
    return ((N << x) - N);
}
 
// Driver Code
int main()
{
    long N = 4;
    long M = 15;
 
    cout << multiplyByMersenne(N, M);
 
    return 0;
}


Java




// Java program to implement
// the above approach
import java.io.*;
import java.util.*;
class GFG
{
 
// Function to find product of a
// Mersenne number with another number
static long multiplyByMersenne(long N, long M)
{
   
    // Stores the power of
    // 2 of integer M + 1
    long x = (int)(Math.log(M + 1) / Math.log(2));
 
    // Return the product
    return ((N << x) - N);
}
 
// Driver Code
public static void main(String[] args)
{
    long N = 4;
    long M = 15;
 
    System.out.print(multiplyByMersenne(N, M));
}
}
 
// This code is contributed by souravghosh0416.


Python3




# Python3 program for the above approach
import math
 
# Function to find product of a
# Mersenne number with another number
def multiplyByMersenne(N, M) :
     
    # Stores the power of
    # 2 of integer M + 1
    x = int(math.log2(M + 1))
 
    # Return the product
    return ((N << x) - N)
 
# Driver Code
N = 4
M = 15
 
print(multiplyByMersenne(N, M))
 
# This code is contributed by sanjoy_62.


C#




// C# program for the above approach
using System;
class GFG{
 
  // Function to find product of a
  // Mersenne number with another number
  static int multiplyByMersenne(int N, int M)
  {
 
    // Stores the power of
    // 2 of integer M + 1
    int x = (int)(Math.Log(M + 1) / Math.Log(2));
 
    // Return the product
    return ((N << x) - N);
  }
 
  // Driver Code
  static public void Main()
  {
    int N = 4;
    int M = 15;
 
    Console.Write(multiplyByMersenne(N, M));
  }
}
 
// This code is contributed by splevel62.


Javascript




<script>
 
// Javascript implementation of above approach
 
// Function to find product of a
// Mersenne number with another number
function multiplyByMersenne(N, M)
{
   
    // Stores the power of
    // 2 of integer M + 1
    let x = (Math.log(M + 1) / Math.log(2));
 
    // Return the product
    return ((N << x) - N);
}
 
// Driver code
let N = 4;
let M = 15;
 
document.write(multiplyByMersenne(N, M));
 
// This code is contributed by target_2
 
</script>


Output: 

60

 

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



Last Updated : 25 Nov, 2021
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads