一、判断 101-200 之间有多少个素数,并输出所有素数。
example1.go
package example1
import (
"fmt"
)
func Shusu(n int) bool {
var flag bool = true
for i := 2; i < n; i++ {
if n%i == 0 {
flag = false
break
}
}
if flag == true {
fmt.Println(n)
}
return flag
}
main.go
package main
import (
"fmt"
"go_learning/day2/homework/example1/example1"
)
func main() {
var n, m, sum int
fmt.Scanf("%d,%d", &n, &m)
fmt.Printf("------以下是素数--------\n")
for i := n; i < m; i++ {
if example1.Shusu(i) {
sum += 1
}
}
fmt.Printf("%d到%d之间一共%d个素数", n, m, sum)
}
结果:
➜ GoWorks go run src/go_learning/day2/homework/example1/main/main.go
101,200
------以下是素数--------
101
103
107
109
113
127
131
137
139
149
151
157
163
167
173
179
181
191
193
197
199
101到200之间一共21个素数
二、打印出100-999中所有的“水仙花数”
所谓“水仙花数”是指一个三位数,其各位数字 立方和等于该数本身。例如:153 是一个“水仙花数”,因为 153=1 的三次 方+5 的三次方+3 的三次方。
example2.go
package example2
func Isxh(n int) bool {
var a int = n % 10
var b int = n / 10 % 10
var c int = n / 100 % 10
sum := a*a*a + b*b*b + c*c*c
return sum == n
}
main.go
package main
import (
"fmt"
"go_learning/day2/homework/example2/example2"
)
func main () {
var n,j int
fmt.Scanf("%d,%d",&n,&j)
fmt.Printf("-------------------\n")
for i := n;i < j;i++ {
if example2.Isxh(i) == true {
fmt.Println(i)
}
}
}
结果:
➜ GoWorks go run src/go_learning/day2/homework/example2/main/main.go
100,999
-------------------
153
370
371
407
三、对于一个数n,求n的阶乘之和
即: 1! + 2! + 3!+…n!
example3.go
package example3
func Jsum(n int) int {
/*
1 1*1 = 1
2 2*1 = 2
3 3*2*1 = 6
4 4*3*2*1 = 24
*/
var sum, s int = 0, 1
for i := 1; i <= n; i++ {
s = s * i // 1=1*1,2=1*2,6=2*3,24=6*4
sum = sum + s // 1=0+1,3=1+2,9=3+6,33=9+24
}
return sum
}
main.go
package main
import (
"fmt"
"go_learning/day2/homework/example3/example3"
)
func main() {
var n int
fmt.Scanf("%d", &n)
fmt.Printf("--------------------\n")
sum := example3.Jsum(n)
fmt.Println(sum)
}
结果:
➜ GoWorks go run src/go_learning/day2/homework/example3/main/main.go
4
--------------------
33