辗转相除求gcd
func GetGCD(a, b int) int {
for b != 0 {
temp := b
b = a % b
a = temp
}
return a
}
func GetGCD2(a, b int) int {
if b == 0 {
return a
}
return GetGCD2(b, a%b)
}
func main() {
fmt.Printf("%d\n", GetGCD(6, 9))
fmt.Printf("%d\n", GetGCD2(6, 9))
}
素数筛
其主要原理就是从2开始如果一个数时素数,那么这个素数乘任何正整数一定是合数。 这里用一个标记数组记录某一个数是不是素数。
func main() {
const n = 100005
var primeFlag = [n]int{1, 1}
for i := 2; i <= int(math.Sqrt(float64(n))); i++ {
if primeFlag[i] == 0 {
for j := 2; i*j < n; j++ {
primeFlag[i*j] = 1
}
}
}
for i := 1; i < n; i++ {
if primeFlag[i] == 0 {
fmt.Printf("%d, ", i)
}
}
}