数学📌质数.txt
质数(prime number)又称素数,在大于1的自然数中,除了1和它本身以外不再有其他因数。

int8范围内质数有31个,最大127
int16范围内质数有3512个,最大32749
int32范围内质数有105097565个,最大2147483647

========== ========== ========== ========== ==========

// IsPrime 判断一个正整数是否质数
func IsPrime(n int) bool {
	if n == 2 {
		return true
	}
	if n < 2 || n&1 == 0 {
		return false
	}
	for i := 3; i*i <= n; i += 2 {
		if n%i == 0 {
			return false
		}
	}
	return true
}

// PrimeFactorize 分解质因子
func PrimeFactorize(n int) []int {
	var res []int
	for n&1 == 0 {
		res = append(res, 2)
		n >>= 1
	}
	for i := 3; i*i <= n; i += 2 {
		for n%i == 0 {
			res = append(res, i)
			n /= i
		}
	}
	if n > 1 {
		res = append(res, n)
	}
	return res
}