Longest subarray with elements divisible by k

Suppose you a given an array. You have to find the length of the longest subarray such that each and every element of it is divisible by k.

Examples:

Input : arr[] = { 1, 7, 2, 6, 8, 100, 3, 6, 16}, k=2
Output : 4

Input : arr[] = { 3, 11, 22, 32, 55, 100, 1, 5}, k=5
Output : 2

Approach:



Below is the implementation of above approach:

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ program of above approach
#include <bits/stdc++.h>
using namespace std;
  
// function to find longest subarray
int longestsubarray(int arr[], int n, int k)
{
    int current_count = 0;
    // this will contain length of longest subarray found
    int max_count = 0;
  
    for (int i = 0; i < n; i++) {
        if (arr[i] % k == 0)
            current_count++;
        else
            current_count = 0;
        max_count = max(current_count, max_count);
    }
    return max_count;
}
  
// Driver code
int main()
{
    int arr[] = { 2, 5, 11, 32, 64, 88 };
    int n = sizeof(arr) / sizeof(arr[0]);
    int k = 8;
    cout << longestsubarray(arr, n, k);
    return 0;
}
chevron_right

filter_none

edit
close

play_arrow

link
brightness_4
code

//Java program of above approach
  
import java.io.*;
  
class GFG {
    // function to find longest subarray
static int longestsubarray(int arr[], 
                        int n, int k)
{
    int current_count = 0;
      
    // this will contain length of 
    // longest subarray found
    int max_count = 0;
  
    for (int i = 0; i < n; i++) 
    {
        if (arr[i] % k == 0)
            current_count++;
        else
            current_count = 0;
        max_count = Math.max(current_count, 
                            max_count);
    }
    return max_count;
}
  
// Driver code
    public static void main (String[] args) {
int arr[] = { 2, 5, 11, 32, 64, 88 };
    int n = arr.length;
    int k = 8;
    System.out.println(longestsubarray(arr, n, k));
}
}
  
// This code is contributed 
// by ajit
chevron_right

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python 3 program of above approach
  
# function to find longest subarray
def longestsubarray(arr, n, k):
    current_count = 0
      
    # this will contain length of 
    # longest subarray found
    max_count = 0
  
    for i in range(0, n, 1):
        if (arr[i] % k == 0):
            current_count += 1
        else:
            current_count = 0
        max_count = max(current_count, 
                            max_count)
      
    return max_count
  
# Driver code
if __name__ == '__main__':
    arr = [2, 5, 11, 32, 64, 88]     
    n = len(arr)
    k = 8
    print(longestsubarray(arr, n, k))
  
# This code is contributed by
# Surendra_Gangwar
chevron_right

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# program of above approach
using System;
  
class GFG
{
// function to find longest subarray
static int longestsubarray(int[] arr, 
                           int n, int k)
{
    int current_count = 0;
      
    // this will contain length of 
    // longest subarray found
    int max_count = 0;
  
    for (int i = 0; i < n; i++) 
    {
        if (arr[i] % k == 0)
            current_count++;
        else
            current_count = 0;
        max_count = Math.Max(current_count, 
                             max_count);
    }
    return max_count;
}
  
// Driver code
public static void Main()
{
    int[] arr = { 2, 5, 11, 32, 64, 88 };
    int n = arr.Length;
    int k = 8;
    Console.Write(longestsubarray(arr, n, k));
}
}
  
// This code is contributed 
// by Akanksha Rai
chevron_right

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// PHP program of above approach 
  
// function to find longest subarray 
function longestsubarray($arr, $n, $k
    $current_count = 0; 
      
    // This will contain length of 
    // longest subarray found 
    $max_count = 0; 
  
    for ($i = 0; $i < $n; $i++)
    
        if ($arr[$i] % $k == 0) 
            $current_count++; 
        else
            $current_count = 0; 
        $max_count = max($current_count,
                         $max_count); 
    
    return $max_count
  
// Driver code 
$arr = array(2, 5, 11, 32, 64, 88 ); 
$n = sizeof($arr); 
$k = 8; 
echo longestsubarray($arr, $n, $k); 
  
// This code is contributed 
// by Sach_Code
?>
chevron_right


Output:
3

GeeksforGeeks has prepared a complete interview preparation course with premium videos, theory, practice problems, TA support and many more features. Please refer Placement 100 for details





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.



Article Tags :
Practice Tags :