• + 5 comments

    Hello!

    I noticed that Your answer goes through way too many iterations and doesn't take large enough steps, there can be no correct answer between a.Max() and 2a.Max(), therefore skipping those is a good idea.

    Looping through by generating an amount of integers also isnt really necessary, just start from lowest possible correct answer ( a.Max() ) and make sure youre not over the largest possible ( b.Min() ) correct answer.

    Works like a charm :).

    Here is the resulting code with comments.

    public static int getTotalX(List<int> a, List<int> b)
    {
    /*Starting from 0 found, storing largest value in A and smallest value in b. Setting starting point to largest value in A.*/
        int foundCount = 0, maxA = a.Max(), minB = b.Min(), current = maxA;
        while (current <= minB)
        {
    /*If the current value is divisible by all members of both arrays, then it's the one we want.*/
            if (a.All(e => current % e == 0 || e % current == 0) && b.All(e => current % e == 0 || e % current == 0))
                foundCount++;
    /*Iterate the value by largest member of divisors, no reason to take smaller steps.*/
            current+= maxA;
            };
        return foundCount;
    }
    

    " C# " for everyone CTRL+F-ing.

    //Stored a.Max() and b.Min() as dsgarg71 suggested below :).