1.取模
取模运算是求两个数相除的余数,一般用来判断能否整除
>>>4%2
0
>>>4%1
0
>>>4%3
1
2.求幂
求x的n次幂
>>>2**3
8
>>>4**2
16
3.素数/质数
质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。
即 1既不是质数也不是合数
def is_prime(num):
if num<2:
return False
i=2
while i*i<=num:
if num%i==0:
return False
i+=1
return True
4.因式分解
一般求如何把一个数因式分解,寻找质因数的过程
num=int(input())
n=num
arr=[]
i=2
while num!=1:
if num%i==0:
arr.append(i)
num//=i
else:
i+=1
arr=[str(i) for i in arr]
print('%d=%s'%(n,'*'.join(arr)))
# 输入 20
# 输出 20=2*2*3
5.大数分解定理
用到pollard-rho算法
网上看了半天没看懂。。
6.GCD(最大公约数)
采用辗转相除法
辗转相除法是一种求两个数的最大公约数的算法,也称欧几里得算法。其基本思想是将两个数进行除法运算,然后用余数来更新被除数和除数,直到余数为零时,除数就是最大公约数。
def gcd(x,y):
while y:
x,y=y,x%y
return x
>>>gcd(4,2)
2
>>>gcd(21,35)
7
7.LCM(最小公倍数)
在辗转相除法的基础上进行
两个数的最小公倍数是两者之积处以最大公约数
a和b的最小公倍数=a*b//(gcd(a,b))
def lcm(x,y):
x1=x
y1=y
while y:
x,y=y,x%y
return x1*y1//x
>>>lcm(3,4)
12
>>>lcm(6,8)
24