GO语言学习之代码案例02
@(go语言 黑马)[GO语言]
爱因斯坦出的一道数学题
- 题目:爱因斯坦曾出过这样一道数学题,有一条长阶梯,若每步跨2阶,最后剩下1阶;若每步跨3阶,最后剩下2阶;若每步跨5阶,最后剩下4阶;若每步跨6阶,最后剩下5阶;只有每步跨7阶,最后才正好1阶不剩。求这个阶梯有多少阶?
- 逻辑:假设有n阶,n分别对2,3,4,5,6,7取余,同时满足所有条件,用&&
- 代码如下:
package main
import "fmt"
func main() {
var n int
for n = 0; n < 1000; n++ {//这里可以不给n设置上限,不过程序会一直循环下去
if n%7 == 0 && n%2 == 1 && n%3 == 2 && n%5 == 4 && n%6 == 5 {
fmt.Println("n=", n)
}
}
}
求1到1000之间的水仙花数
- 题目:每个位数的立方相加会等于本身的数,我们称之为水仙花数,求出1到1000之间的所有水仙花数(不包括1000)
- 逻辑:这里就是要想办法提取出各位,十位和百位的数
- 代码如下:
package main
import "fmt"
func main() {
for i := 0; i < 1000; i++ {
a := i / 100 //对100取余得到百位数
b := i % 100 / 10 //对100取余,再除以10得到十位数
c := i % 10 //对10取余,得到个位数
if a*a*a+b*b*b+c*c*c == i {
fmt.Println("i=", i)
}
}
}
敲七
- 题目:1到100之间,遇到含有7的数和被7整除的数,则输出敲桌子。
- 逻辑:主要有3个条件:被7整除,个位不含7,十位不含7,;三个条件只要满足一个,就要敲桌子。
- 代码如下:
package main
import "fmt"
func main() {
a := 0
for ; a < 100; a++ {
if a%7 == 0 || a/10 == 7 || a%10 == 7 {//三个条件用或语句连接
fmt.Println("敲桌子")
} else {
fmt.Println(a)
}
}
}
打印出九九乘法口诀
- 题目:输出九九乘法口诀
- 逻辑:找出每行中的不变项,用来控制行,改变的用来控制列。
- 代码如下:
package main
import "fmt"
func main() {
a := 0
for ; a < 100; a++ {
if a%7 == 0 || a/10 == 7 || a%10 == 7 {//三个条件用或语句连接
fmt.Println("敲桌子")
} else {
fmt.Println(a)
}
}
}
找出10到10000之间的回文素数
- 题目:回文的意思是,正着念个反着念都一样;素数是只能被1和自身整除的数;同时满足这两个条件的数称之为回文素数;找出10到10000的回文素数。
- 逻辑:用for循环遍历10到10000所有的数,先判断是否是素数,在这一环节需要剔除非素数,然后再判断是否是回文素数。
- 代码如下:
package main
import "fmt"
func main() {
for i := 10; i < 1000; i++ {
flat := 1//利用flat的变化来剔除非素数
for j := 2; j < i; j++ {
//flat := 1
if i%j == 0 { //判断是否为素数
flat = 0
break
}
}
if flat == 1 {
if i < 100 && i/10 == i%10 { //两位数,两位数个三位数分开
fmt.Println(i)
} else if i >= 100 && i/100 == i%10 { //三位数,三位数的百位和个位相同则是回文
fmt.Println(i)
}
}
}
}