0
点赞
收藏
分享

微信扫一扫

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

蓝哆啦呀 2022-01-12 阅读 40

系列文章目录

【蓝桥杯学习笔记】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 条评论