I'm a beginner programmer and decided to try some coding challenges. I found CodeEval and attempted the first challenge, FizzBuzz. However upon submitting my code I found that my submission only partially solved the problem.Link to the challengeChallenge Description:Players generally sit in a circle. The first player says the number  1, and each player says next number in turn. However, any number  divisible by X (for example, three) is replaced by the word fizz, and  any divisible by Y (for example, five) by the word buzz. Numbers  divisible by both become fizz buzz. A player who hesitates, or makes a  mistake is eliminated from the game.Write a program that prints out the final series of numbers where  those divisible by X, Y and both are replaced by F for fizz, B for  buzz and FB for fizz buzz.Input Sample: Your program should accept a file as its first argument. The file  contains multiple separated lines; each line contains 3 numbers that  are space delimited. The first number is the first divider (X), the  second number is the second divider (Y), and the third number is how  far you should count (N). You may assume that the input file is  formatted correctly and the numbers are valid positive integers.For Example:1) 3 5 102) 2 7 15Output Sample:Print out the series 1 through N replacing numbers divisible by X with  F, numbers divisible by Y with B and numbers divisible by both  with FB. Since the input file contains multiple sets of values, your  output should print out one line per set. Ensure that there are no  trailing empty spaces in each line you print.1) 1 2 F 4 B F 7 8 F B2) 1 F 3 F 5 F B F 9 F 11 F 13 FB 15How can I improve my code speed-wise and memory-wise so that I can fully complete this challenge?The code is working for my test cases.import sysdef main(name_file):    _test_cases = open(name_file, 'r')    for test in _test_cases:        result =         if len(test) == 0:            break        else:            test = test.split()            first_div = int(test[0])            second_div = int(test[1])            lim = int(test[2])            for i in range(1, lim+1):                if i % (first_div*second_div) == 0:                    result += FB                 elif i % first_div == 0:                    result += F                 elif i % second_div == 0:                    result += B                 else:                    result += %d  % i            print(result[:-1])    _test_cases.close()if __name__ == '__main__':    main(sys.argv[1])
FizzBuzz for CodeEval
python;performance;beginner;python 3.x;fizzbuzz
There is a bug in your code for those times when the two input values are not prime.Consider an instance when the input values are 4 and 6. In this case, your code will output F for multiples of 4, and B for multiples of 6, and FB for multiples of 24.... great... but, is it? No, 12 is a multiple of both, but will only print F .If you want to use the optimized cascading-if-else version of FizzBuzz, then you need to ensure the inputs are both prime, or have no common factors.It would often still be faster to compute the common factors and then after that do the system you have.