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 }