小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
【题解】【PTA团体程序设计天梯赛】
L1-026 I Love GPLT (5 分) Go语言|Golang
这道超级简单的题目没有任何输入。
你只需要把这句很重要的话 —— “I Love GPLT”——竖着输出就可以了。
所谓“竖着输出”,是指每个字符占一行(包括空格),即每行只能有1个字符和回车。
输入样例1:
无
结尾无空行
输出样例1:
I
L
o
v
e
G
P
L
T
结尾无空行
思路:
注意一下判断控制一下最后的空格就好了。
代码如下:
package main
import "fmt"
func main() {
str := "I Love GPLT"
for index,i:=range str{
if index != len(str)-1 { //如果不是最后一个就打空格输出
fmt.Println(string(i))
}else{
fmt.Printf(string(i)) //如果是最后一个,就格式化输出,没有空格
}
}
}
【题解】【PTA团体程序设计天梯赛】
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
}