# Prefix Product Array

Given an array arr[] of N integers the task is to generate a prefix product array from the given array.

In a prefix product array, ith term pref[i] = arr[i] * arr[i – 1] * …… * arr

Examples:

Input: {1, 2, 3, 4, 5}
Output: {1, 2, 6, 24, 120}
Explanation:
The Prefix Product Array will be {1, 2*1, 3*2*1, 4*3*2*1, 5*4*3*2*1} = {1, 2, 6, 24, 120}

Input: {2, 4, 6, 5, 10}
Output: {2, 8, 48, 240, 2400}

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

Approach:
Follow the steps below to solve the problem:

• Iterate over the given array from indices 1 to N – 1.
• Calculate arr[i] = arr[i] * arr[i-1] for every ith index.
• Finally, print the prefix product array.

Below is the implementation of the above approach.

## C++

 `// C++ Program to generate ` `// Prefix Product Array ` `#include ` `using` `namespace` `std; ` ` `  `// Function to generate ` `// prefix product array ` `int` `prefixProduct(``int` `a[], ` `                  ``int` `n) ` `{ ` `    ``// Update the array ` `    ``// with the product of ` `    ``// prefixes ` `    ``for` `(``int` `i = 1; i < n; i++) { ` `        ``a[i] = a[i] * a[i - 1]; ` `    ``} ` ` `  `    ``// Print the array ` `    ``for` `(``int` `j = 0; j < n; j++) { ` `        ``cout << a[j] << ``", "``; ` `    ``} ` ` `  `    ``return` `0; ` `} ` ` `  `// Driver Code ` `int` `main() ` `{ ` `    ``int` `arr[] = { 2, 4, 6, 5, 10 }; ` `    ``int` `N = ``sizeof``(arr) / ``sizeof``(arr); ` `    ``prefixProduct(arr, N); ` ` `  `    ``return` `0; ` `} `

## Java

 `// Java program to generate ` `// Prefix Product Array ` `class` `GFG{ ` ` `  `// Function to generate ` `// prefix product array ` `static` `int` `prefixProduct(``int` `[]a, ``int` `n) ` `{ ` `     `  `    ``// Update the array ` `    ``// with the product of ` `    ``// prefixes ` `    ``for``(``int` `i = ``1``; i < n; i++) ` `    ``{ ` `       ``a[i] = a[i] * a[i - ``1``]; ` `    ``} ` ` `  `    ``// Print the array ` `    ``for``(``int` `j = ``0``; j < n; j++) ` `    ``{ ` `       ``System.out.print(a[j] + ``", "``); ` `    ``} ` `     `  `    ``return` `0``; ` `} ` ` `  `// Driver Code ` `public` `static` `void` `main (String[] args)  ` `{ ` `    ``int` `arr[] = ``new` `int``[]{ ``2``, ``4``, ``6``, ``5``, ``10` `}; ` `    ``int` `N = ``5``; ` `     `  `    ``prefixProduct(arr, N); ` `} ` `} ` ` `  `// This code is contributed by Ritik Bansal `

## Python3

 `# Python3 Program to generate ` `# Prefix Product Array ` ` `  `# Function to generate ` `# prefix product array ` `def` `prefixProduct(a, n): ` ` `  `    ``# Update the array ` `    ``# with the product of ` `    ``# prefixes ` `    ``for` `i ``in` `range``(``1``, n): ` `        ``a[i] ``=` `a[i] ``*` `a[i ``-` `1``]; ` `     `  `    ``# Print the array ` `    ``for` `j ``in` `range``(``0``, n): ` `        ``print``(a[j], end ``=` `", "``); ` `     `  `    ``return` `0``; ` ` `  `# Driver Code ` `arr ``=` `[ ``2``, ``4``, ``6``, ``5``, ``10` `]; ` `N ``=` `len``(arr); ` `prefixProduct(arr, N); ` ` `  `# This code is contributed by Code_Mech `

## C#

 `// C# program to generate ` `// Prefix Product Array ` `using` `System; ` `class` `GFG{ ` ` `  `// Function to generate ` `// prefix product array ` `static` `int` `prefixProduct(``int` `[]a, ``int` `n) ` `{ ` `     `  `    ``// Update the array ` `    ``// with the product of ` `    ``// prefixes ` `    ``for``(``int` `i = 1; i < n; i++) ` `    ``{ ` `        ``a[i] = a[i] * a[i - 1]; ` `    ``} ` ` `  `    ``// Print the array ` `    ``for``(``int` `j = 0; j < n; j++) ` `    ``{ ` `        ``Console.Write(a[j] + ``", "``); ` `    ``} ` `    ``return` `0; ` `} ` ` `  `// Driver Code ` `public` `static` `void` `Main (``string``[] args)  ` `{ ` `    ``int` `[]arr = ``new` `int``[]{ 2, 4, 6, 5, 10 }; ` `    ``int` `N = 5; ` `     `  `    ``prefixProduct(arr, N); ` `} ` `} ` ` `  `// This code is contributed by rock_cool `

Output:

```2, 8, 48, 240, 2400
```

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

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.

My Personal Notes arrow_drop_up Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.