天天看點

通過函數判斷一個自然數是否為素數

題目要求

通過函數判斷一個自然數是否為素數

代碼

# 判斷是否為素數
def is_prime(data):

    flag = True
    int_list = []
    if data > 1:
        for i in range(2,data): # 查找除了1和其本身外,其他因子
            if data % i == 0:
                # print(data,'不是素數')
                flag = False
                int_list.append(i)
        for i in range(2,data):
            if data % i == 0:
                return int_list
            # else: 
            #     print(data,'是素數')
    return flag

# 找出指定範圍内所有的素數
def range_sushu(data1,data2):
    data_list = []
    for num in range(data1,data2 + 1):
        # 素數大于 1
        if num > 1:
            for i in range(2,num):
                if (num % i) == 0:
                    break
            else:
                data_list.append(num)
                # print(num)
    print("{}:{}指定範圍内的素數清單為:{}".format(data1,data2,data_list))
    return True

if __name__ == "__main__":
    # 基礎要求
    number = input("請輸入一個不大于1000的自然數:")
    flag = is_prime(int(number))
    if flag == True:
        print("{}是一個素數".format(int(number)))
    else:
        print("{}不是一個素數".format(int(number)))
        print("能整除該數的所有整數清單{}".format(flag))

    # 進階要求
    lim1,lim2 = eval(input("請輸入兩個不大于1000的自然數作為搜尋範圍:"))
    if lim1 <= lim2:
        range_sushu(lim1,lim2)
    else:
        range_sushu(lim2,lim1)
    # print(lim1,lim2)
      

結果

通過函數判斷一個自然數是否為素數