【蓝桥杯学习笔记】4. 质因数分解

系列文章目录

【蓝桥杯学习笔记】1. 入门基本语法及练习题

【蓝桥杯学习笔记】2. 常用模型----最大公约数和最小公倍数

【蓝桥杯学习笔记】3. 质数判断



前言

        蓝桥本笔记-----从入门到放弃

        本片文章使用Python语言编写----Now is better than never


一、质因数 

       1.质因数

        (又叫素因数或质因子)在数论里是指能整除给定正整数的质数。

二、质因数分解

        1. 概念:

         每个合数都可以写成几个质数相乘的形式,其中每个质数都是这个合数的因数,把一个合数用质因数相乘的形式表示出来,叫做分解质因数。如30=2×3×5 。分解质因数只针对合数。

        2. 考虑质数情况

        考虑所有的自然数,代码如下:

def PrimeFactors_Dec(num):
    n = num  # 100
    f = []
    while n !=1:# 100
        for i in range(2, int(n+1)):
            if n % i == 0: # i = 2 2 5 5
                f.append(i)
                n = n/i # n = 50 25 5 1
                break  
    f.sort()
    f = [str(i)for i in f]
    print(str(num)+'='+'*'.join(f))

a, b = map(int,input().split())
if 2<=a<=b<=10000:
     for i in range(a,b+1):
        PrimeFactors_Dec(i)   

        

       3. 不考虑质数情况 

                不考虑质数的时首先要可见利用质数判断将质数去掉,留下合数,再进行合数判断。代码如下:

import math

def is_Prime(num):
    if num == 2 or num == 3:
        return True
    if num%6 != 5 and num%6 != 1:
        return False
    for i in range(5,int(math.sqrt(num))+1,6):
        if num % i == 0 or num % (i+2)==0: #i 和(i+2): 5 7 11 13 17 19 
            return False
    return True

            
def PrimeFactors_Dec(num):
    n = num 
    f = []
    if not is_Prime(num):
        while n != 1: # 第一遍找能将其整除的最小质数,。。。
            for i in range(2, int(n+1)):
                if n % i == 0:
                    f.append(i)
                    n = n//i
                    break # 找到了 退出循环,n = n//i 找下一个数
        f.sort()
        f = [str(i)for i in f]
        print(str(num)+'='+'*'.join(f))
        
for i in range(90,100):        
    PrimeFactors_Dec(i)            


总结

总结代码如下:

import math

# 质数判断
def is_Prime(num):
    if num == 2 or num == 3:
        return True
    if num%6 != 5 and num%6 != 1:
        return False
    for i in range(5,int(math.sqrt(num))+1,6):
        if num % i == 0 or num % (i+2)==0: #i 和(i+2): 5 7 11 13 17 19 
            return False
    return True

# 质数分解           
def PrimeFactors_Dec(num):
    n = num 
    f = []
    if not is_Prime(num):
        while n != 1: # 第一遍找能将其整除的最小质数,。。。
            for i in range(2, int(n+1)):
                if n % i == 0:
                    f.append(i)
                    n = n//i
                    break # 找到了 退出循环,n = n//i 找下一个数
        f.sort()
        f = [str(i)for i in f]
        print(str(num)+'='+'*'.join(f))
        
for i in range(90,100):        
    PrimeFactors_Dec(i)            

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值