系列文章目录
【蓝桥杯学习笔记】2. 常用模型----最大公约数和最小公倍数
前言
蓝桥本笔记-----从入门到放弃
本片文章使用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)