L1-028 判斷素數 (10 分) Go語言|Golang
本題的目标很簡單,就是判斷一個給定的正整數是否素數。
輸入格式:
輸入在第一行給出一個正整數N(≤ 10),随後N行,每行給出一個小于2^31 的需要判斷的正整數。
輸出格式:
對每個需要判斷的正整數,如果它是素數,則在一行中輸出Yes,否則輸出No。
輸入樣例1:
2
11
111
結尾無空行
輸出樣例1:
Yes
No
思路:
什麼是素數?也稱質數。一個大于1的正整數,如果除了1和它本身以外,不能被其他正整數整除,就叫素數。
如2,3,5,7,11,13,這些隻能被自己說是1整除,但是不能被其他正整數整除。
是以我們隻需要先判斷這個數是不是1,因為這個數很特殊,然後我們在從2到這個數進行判斷,看看有沒有數能把将他整除。沒有的話就是素數了。
代碼如下:
package main
import (
"fmt"
"math"
)
func main() {
var nums int
_,_=fmt.Scan(&nums)
for i:=0;i<nums;i++{
var num int
_,_=fmt.Scanln(&num)
if Su(num) {
if i==nums-1 {
fmt.Printf("Yes") // 控制最後一行的回車,其實用清單存起來可能會了解簡單一點。
}else{
fmt.Printf("Yes\n")
}
}else{
if i==nums-1 { // 控制最後一行的回車
fmt.Printf("No")
}else{
fmt.Printf("No\n")
}
}
}
}
func Su(num int) bool {
if num==1 { // 1不是質數
return false
}
for i:=2;i<int(math.Sqrt(float64(num)))+1;i++{ // 直接開根号,能讓這個數的範圍減少
if num%i==0 { // 如果能有數被整出,那麼就不是素數了
return false
}
}
return true
}