Between Two Sets

There will be two arrays of integers. Determine all integers that satisfy the following two conditions:

  1. The elements of the first array are all factors of the integer being considered
  1. The integer being considered is a factor of all elements of the second array
These numbers are referred to as being between the two arrays. Determine how many such numbers exist.


Example:

Input: n = 2, m=3,a[n]={2,4},b[m]={16,32,96}
Output: 3

Approach

Java


import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class BetweenTwoSets {
    public static void main(String[] args) {
        int a[] = { 24 }, b[] = { 163296 };
        List<Integerl1 = Arrays.stream(a).boxed().collect(Collectors.toList());
        List<Integerl2 = Arrays.stream(b).boxed().collect(Collectors.toList());
        System.out.println(getTotalX(l1, l2));

    }

    public static int getTotalX(List<IntegeraList<Integerb) {
        int n = a.size();
        int m = b.size();
        int x = findlcm(a, n);
        int y = findGCD(b, m);
        int q = y / x;
        int no = 0;

        for (int i = 1; i <= q; i++) {
            if (q % i == 0) {
                no++;
            }
        }
        return no;

    }

    static int gcd(int aint b) {
        if (a % b == 0)
            return b;
        else
            return gcd(b, a % b);
    }

    static int findlcm(List<Integerlint n) {
        int ans = l.get(0);
        for (int i = 1; i < n; i++)
            ans = ((l.get(i) * ans) / gcd(l.get(i), ans));

        return ans;
    }

    static int findGCD(List<Integerlint n) {
        int result = l.get(0);
        for (int i = 1; i < n; i++)
            result = gcd(l.get(i), result);

        return result;
    }
}

C++

#include <bits/stdc++.h>
using namespace std;

int gcd(int aint b)
{
    if (a % b == 0)
        return b;
    else
        return gcd(ba % b);
}
long int findlcm(int arr[], int n)
{
    long int ans = arr[0];
    for (int i = 1i < ni++)
        ans = ((arr[i] * ans) /
               gcd(arr[i], ans));

    return ans;
}
int findGCD(int arr[], int n)
{
    int result = arr[0];
    for (int i = 1i < ni++)
        result = gcd(arr[i], result);

    return result;
}

int main()
{

    int n = 2m = 3ijkyno = 0q;
    long int x;
    int a[n] = {24}, b[m] = {163296};

    x = findlcm(an);
    y = findGCD(bm);
    q = y / x;
    for (i = 1i <= qi++)
    {
        if (q % i == 0)
        {
            no++;
        }
    }
    printf("%d"no);
    return 0;
}


No comments:

Post a Comment