问题
输出1-100内的所有prime number。
算法1
判断数n是否为prime number,其实就是找出2到 n − 1 n-1 n−1内是否有能被n整除的因子,存在这样的因子则不是素数,反之则素数。
package main
/*
author:michaelbobo
date:20210730
function:To judge the prime number in the range of[1,100] and output them
*/
import "fmt"
func main() {
for i := 2; i <= 100; i++ {
if (i == 2) || (i == 3) {
fmt.Printf("The numbe %d is prime\n", i)
} else {
var count int = 0
for j := 2; j <= (i - 1); j++ {
flag := i % j
if flag != 0 {
count += 1
}
if count == (i - 2) {
fmt.Printf("the number %d is prime\n", i)
}
}
}
}
}
算法2
判断数n是否为prime number,其实就是找出2到 n \sqrt[]{n} n内是否有能被n整除的因子,存在这样的因子则不是素数,反之则素数。
package main
import (
"fmt"
"math"
)
func main() {
for i := 1; i <= 100; i++ {
if i == 2 || i == 3 {
fmt.Printf("The number %d is prime\n", i)
} else {
var count int = 0
var fact int = 0
for j := 2; j <= int(math.Floor(math.Sqrt(float64(i)))); j++ {
if i%j != 0 {
count += 1
}
fact = int(math.Floor(math.Sqrt(float64(i)))) - 2 + 1
if count == fact {
fmt.Printf("The number %d is prime\n", i)
}
}
}
}
}