pythonfor-loopwhile-loophamming-codehamming-numbers

How can I convert hamming number code in a while or for loop python


def is_hamming_numbers(x):
    if x == 1:
        return 1
    if x % 2 == 0:
        return is_hamming_numbers(x/2)
    if x % 3 == 0:
        return is_hamming_numbers(x/3)
    if x % 5 == 0:
        return is_hamming_numbers(x/5)
    return 0

    def hamming_numbers_sequence(x):
        if x == 1:
            return 1
        hamming_numbers_sequence(x-1)
        if is_hamming_numbers(x) == True:
            print("%s" % x, end=' ')


    print(is_hamming_numbers(7))
    print(is_hamming_numbers(1))
    
    hamming_numbers_sequence(24)
    print()

Hi, I need to print the hamming numbers but I can only do it with the if loop. How can I do it with a for or while loop?


Solution

  • Something like this?

    def is_hamming_numbers(x: int) -> bool:
        if x == 1:
            return True
        if x % 2 == 0:
            return is_hamming_numbers(x/2)
        if x % 3 == 0:
            return is_hamming_numbers(x/3)
        if x % 5 == 0:
            return is_hamming_numbers(x/5)
        return False
    
    
    for n in range(1, 25):
        if is_hamming_numbers(n):
            print(n)