zoukankan      html  css  js  c++  java
  • Python3练习:分解质因数

    代码如下:

    # 质数判断函数
    def is_prime(num):
        if num < 2:
            return False
        elif num == 2 or num == 3:
            return True
        else:
            for i in range(2, int(num**0.5) + 1):
                if num % i == 0:
                    return False
            return True
    
    
    # 质因数分解函数
    def prime_factorize(num):
        if num < 2:  # 非质数亦非合数
            print('"%s" have no prime factor.' % num)
            return 0
        if is_prime(num):  # 质数
            print('"%s" is prime number!' % num)
            return 0
        else:  # 合数
            pri_fac_list = []  # 用于保存质因数
            while 1:
                if is_prime(num):
                    pri_fac_list.append(num)
                    break
                for i in range(2, num//2 + 1):
                    if is_prime(i) and num % i == 0:  # i既是质数又是因数
                        pri_fac_list.append(i)
                        num = num // i
                        # print('TEST:num = %s' % num)
                        break  # 跳出for循环
        print(pri_fac_list)
    
    
    if __name__ == '__main__':
        global n
        try:
            n = int(input('Enter a number:').strip())  # 输入待分解的数
        except ValueError:
            print('Error! Please input a number.')  # 异常处理
            exit(1)
    
        prime_factorize(n)

    注意

    若不用 “global n” 将n声明为全局变量,Pycharm将在 “prime_factorize(n)” 处提示警告:

    Name 'n' can be not defined less... (Ctrl+F1)
    This inspection warns about local variables referenced before assignment.

    即赋值前引用局部变量。

    运行效果:

  • 相关阅读:
    redis缓存问题解决方案
    JVM 2-垃圾收集及内存分配策略
    JVM 1-内存管理
    mysql数据库基础
    事务学习
    使用redis分布式锁来解决集群项目的定时任务冲突问题
    Spring AOP学习
    Spring IOC
    java语言基础7--线程相关类
    多重背包的二进制优化——DP
  • 原文地址:https://www.cnblogs.com/iouwenbo/p/10322803.html
Copyright © 2011-2022 走看看