Golang 如何检查输入的数字是否为Neon数
在本教程中,我们将编写和解释代码,以检查给定的数字是否为Neon数。Neon数是一个等于其平方中所有数字的和的数字。
例如,9是一个Neon数,如下所示:
The square of 9 is:
9 * 9 = 81
The sum of each digit of the square i.e 81 is 9 and the number is also 9 so 9 is a Neon number.
步骤
- 步骤 1 - 首先声明我们要查找幸运数的范围内的数字。
-
步骤 2 - 现在,我们从用户那里获取输入,检查它是否是一个幸运数。
-
步骤 3 - 调用isNeonNumber(num int32)函数,检查当前数字是否是幸运数,如果是则打印该数字。
示例
在此示例中,我们将查找用户从输入中获取的两个整数之间的幸运数。
时间复杂度
O(1) – 时间复杂度是常数,因为无论输入是什么,程序都需要相同的时间。
空间复杂度
O(1) – 程序中的变量是静态的,因此空间复杂度也是常数。
package main
// fmt package provides the function to print anything
import "fmt"
func isNeonNumber(num int32) bool {
// declaring the sum variable which will store
// the sum of each digit in the square of the number
var sum int32 = 0
// declaring and initializing the tempNum variable with the square of num
// on which we will perform some arithmetic operations ahead
var tempNum int32 = num * num
// running a for loop till the tempNum become zero
for tempNum != 0 {
// picking each digit by doing mode on the current number
currDigit := tempNum % 10
// adding the current digit into the sum variable
sum = sum + currDigit
// eliminating the last digit from the end
tempNum = tempNum / 10
}
// if the sum is equal to the number then returning true
if sum == num {
return true
}
return false
}
func main() {
// declaring the integer number using the var keyword between which we
// have to find the Neon numbers
var number int32
fmt.Println("Program to check whether the given number is a Neon number or not.")
fmt.Println("Enter the number to check whether it is the Neon number or not.")
// Taking the input from the user
fmt.Scanln(&number)
if isNeonNumber(number) {
fmt.Println(number, "is a Neon number.")
} else {
fmt.Println(number, "is not a Neon number.")
}
}
输出1
Program to check whether the given number is a Neon number or not.
Enter the number to check whether it is the Neon number or not.
9
9 is a Neon number.
输出2
Program to check whether the given number is a Neon number or not.
Enter the number to check whether it is the Neon number or not.
202
202 is not a Neon number.
代码说明
var number int32
– 这行代码声明了一个int32类型的变量。我们将检查这个数是否是霓虹数。-
fmt.Scanln(&number)
– 这里我们从用户那里获取输入。 -
if isNeonNumber(number) {}
– 在这个if条件中调用了isNeonNumber()函数,并传递了参数num,它是for循环的当前索引。if条件检查isNeonNumber()函数返回的值。如果值为真,则打印该数。 -
func isNeonNumber(num int32) bool {}
– 这是isNeonNumber()函数。它包含一个int32类型的num参数,返回值为bool类型。var sum int32 = 0
– 这里声明了一个int32类型的sum变量,它将存储数字平方的各位数字之和。-
var tempNum int32 = num
– 声明了一个int32类型的tempNum变量,它的初始值是num的平方。我们将对tempNum进行算术运算,所以我们不直接对num变量进行这些算术运算,后面将与sum进行比较。 -
for tempNum != 0 {}
– 这个for循环将一直运行,直到tempNum变为零。 -
currDigit := tempNum % 10
– 通过对tempNum除以10取余得到当前数的个位数,并将其存储在currDigit中。 -
sum = sum + currDigit
– 将currDigit加到sum变量中。 -
tempNum = tempNum / 10
– 将tempNum除以10,以便从值中去除最后一位数字。 -
if sum == num {}
– 最后,我们将sum与数字进行比较,并返回true或false。
逻辑解释
这个数是霓虹数
假设我们有一个数字371,我们需要检查该数字是否是阿姆斯特朗数。
- 通过进行%运算取得最后一个数字 – 81 % 10 = 1 和 = 0 + 1 -> 和 = 1
数字 -> 81 /10 = 8
- 通过进行%运算取得最后一个数字 – 8 % 10 = 8 和 = 1 + 8 -> 和 = 9
数字 -> 8 /10 = 0
正如您所见,和等于初始数字,所以9是一个霓虹数。
这个数不是霓虹数
假设我们有一个数字12,我们需要检查该数字是否是霓虹数。
12的平方是144,现在我们要找出144的每个数字的和..
- 通过取最后一个数字进行%%% -144 % 10 =4 加和=0 + 4 ->和= 4
数目 -> 144 /10 = 14
- 通过取最后一个数字进行%%%14 %-10 =4 加和 =4 + 4 ->和= 8
数目 -> 14 /10 =1
- 通过取最后一个数字进行%%%1 %-10 =1 加和= 8 + 1 ->和= 9
数目 -> 1 /10 =0
结论
如你所见,和不等于初始数字,所以12不是一个”Neon number”。这就是关于Golang代码的所有内容,用于检查给定数字是否为”Neon number”。想要了解更多关于go的知识,你可以探索这些 教程 。