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("Yesn")
}
}else{
if i==nums-1 { // 控制最后一行的回车
fmt.Printf("No")
}else{
fmt.Printf("Non")
}
}
}
}
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
}
《本文》有 4985 条评论