Find a simple digital

0. Simple Number Finding

 

You are playing a card game with your friends. This game in China named “扎金花”. In this game, the

2, 3, 5 are some simple powerful numbers. Because the combination of 2,3,5 is less than any other combinations but greater than the AAA, which is the king in this game. In today, you want to find if a number is a simple number, in which their factors only include 2, 3 and 5.

 

So your task is to find out whether a given number is an amazing number.

 

 

E.g Input: 6

Output: (2, 3)

Explanation: 6 = 2 x 3

 

Input: 8

Output: (2, 2, 2)

Explanation: 8 = 2 x 2 x 2

 

Input: 14 Output:None

Explanation: 14 is not amazing since it includes another prime factor 7.

 

How to check your answer:

 

If you test 1845281250, your program should give (2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 5, 5, 5, 5, 5)

If you test 3690562500, your program should give (2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 5, 5, 5, 5, 5);

If you test 1230187500, your program should give (2, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 5, 5, 5, 5, 5, 5); If you test 10023750, your program should give None;

 

 

from math import sqrt, floor


def isPrime(number):
    flag = True
    factor = 0
    for i in range(2, floor(sqrt(number)) + 1):
        if number % i == 0:
            flag = False
            factor = i
            break
    return flag, factor


if __name__ == "__main__":
    prompt = """请输入一个正整数:"""
    number = int(input(prompt))
    result = []
    while True:
        flag, factor = isPrime(number)
        if flag:
            if number in [2, 3, 5]:
                result.append(number)
            else:
                result = []
            break
        else:
            if factor in [2, 3, 5]:
                result.append(factor)
                number /= factor
            else:
                result = []
                break
    if result:
        print(tuple(result))
    else:
        print(None)

  

Guess you like

Origin www.cnblogs.com/keystone/p/10955208.html