一、列出9X9乘法表,并计算总耗时
tm := time.Now()//定义变量接收现在的时间
for i := 1; i < 10; i++ {
for j := 1; j <= i; j++ { //j<=i 这个时候不会有重复,例如1*9之后不会再有9*1出现
fmt.Printf("%d * %d = %d \t", i, j, i*j)
}
fmt.Println("")
}
clock := time.Since(tm)//统计从开始到现在运行结束的时间
fmt.Printf("总耗时%s", clock)
截图:
二、求1000以内回文数
正读和倒读都有意义的文字称为“回文”。例如,小白是一个名字,如果反过来,白小,也可以是一个人名,这个人姓小名白。王融有诗《春游回文诗》中的诗句“风朝指锦幔,月晓照莲池”,反读也是有意义的,不信你读读。
而“回文数”,则是一种数字。例如,65856,这个数正读是65856,倒读也是65856,这样的数就是回文数。
数学中有著名的“回文数猜想”之谜,至今没有解决。该问题描述的是:任取一个数,把它倒过来,并将这两个数相加,然后这个和数倒过来,与原来的和数相加,重复这个过程,一定能获得一个回文数。
var sum int = 0
for i := 100; i < 1000; i++ {
x := i / 100 //百位
y := i / 10 % 10 //十位
z := i % 10 //个位
if x+y*10+z*100 == x*100+y*10+z {//满足条件从左到右念跟从又到左念都一样
fmt.Printf("回文数%d \n", i)
sum++//统计总数有多少个
}
}
fmt.Printf("1000以内回文数共有%d 种\n", sum)
截图:
三、水仙花数
理解:
1.水仙花数是一个三位数,所以它的取值范围是100 ~ 999,所以我们需要循环遍历100~999的数.
2.水仙花数每个位上的数字的3次幂之和等于它本身,因此我们想要判断一个三位数是不是水仙花数需要把它的三个位数分别取出.3.判断取出的三个位数的 3次幂之和是否等于它本身,是则输出.
for i := 100; i < 1000; i++ {
x := i / 100 //百位
y := i / 10 % 10 //十位
z := i % 10 //个位
if x*x*x+y*y*y+z*z*z == i {//要满足这个三位数的个十百位各自三次方加起来等于它自身
fmt.Printf("水仙花数%d \n", i)
}
}
截图:
四、最大公约数,最小公倍数
理解
两个数的乘积等于这两个数的最大公约数与最小公倍数的积。即可以利用辗转相除法(欧几里得算法)或者辗转相减(更相减损术)或者分解质因数法先求出最大公约数再用两数之积除以最大公约数得出最小公倍数。
var x, y int
fmt.Println("请输入x,y的值")
fmt.Scanf("%d%d", &x, &y)
var n = 0
var min = 0
if x > y {
n = y
} else {
n = x
}
for i := n; i >= 1; i-- {
if x%i == 0 && y%i == 0 {
fmt.Printf("最大公约数%d\n", i)
min = i
break
}
}
fmt.Printf("最小公倍数是%d", x*y/min)
截图:
五、素数
理解:
1、素数又叫质数。素数,指的是“大于1的整数中,只能被1和这个数本身整除的数”。
2、素数也可以被等价表述成:“在正整数范围内,大于1并且只有1和自身两个约数的数”。
3、素数的定义:只能被常数1或自己整除,不能被其他整数整除的正整数。
4.任何一个正整数,都能被常数1或自己整除。素数,不能被常数1或自己以外的其他整数整除。合数,还能被常数1或自己以外的其他整数整除。
正整数1,它的因数:①常数1;②自己。两个因数。凡是素数,都只有常数1或自己两个因数,不存在其他整数的乘积。合数,除了常数1或自己两个因数外,至少还可以是其他两个整数的因数。
var i, j int
var n int = 0
for i = 2; i < 100; i++ {
for j = 2; j <= (i / j); j++ {
if i%j == 0 {
//fmt.Printf("%d 不是素数\n", i)
break
}
}
if j > (i / j) {
fmt.Printf("%d ", i)
n++
if n%5 == 0 {
fmt.Println(" ")
n = 0
}
}
}