如何在Go语言中检查输入数字是否为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 - 首先,我们声明要查找Neon数的范围。
步骤2 - 现在,我们从用户那里获取输入,检查它是否为Neon数。
步骤3 - 调用isNeonNumber(num int32)函数,并检查当前数字是否为Neon数,如果是,则打印该数字。
示例
在这个例子中,我们将找到用户输入的两个整数之间的Neon数。
时间复杂度
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类型的变量。我们将检查这个数字是否为Neon数。
fmt.Scanln(&number)- 在这里,我们从用户那里获取输入。
if isNeonNumber(number) {} - 在这个if条件中,调用isNeonNumber()函数并传递参数num(这是for循环的当前索引)。if条件检查isNeonNumber()函数返回的值。如果值为true,则打印该数字。
func isNeonNumber(num int32) bool {} - 这是isNeonNumber()函数。它包含一个int32类型的num参数,返回值类型为bool。
var sum int32 = 0 - 在这里,我们声明一个int32类型的sum变量,它将存储数字平方的数字之和。
var tempNum int32 = num - 声明一个int32类型的tempNum变量,它被num的平方值初始化。我们将对tempNum进行算术运算,这就是为什么我们不直接对稍后将与sum比较的num变量进行这些算术运算的原因。
for tempNum != 0 {} - 这个for循环一直运行到tempNum变为零。
currDigit := tempNum % 10 - 我们通过对10应用%运算符并将其存储在currDigit中来获取当前数字的最后一位数字。
sum = sum + currDigit - 将currDigit添加到sum变量。
tempNum = tempNum / 10 - 将tempNum除以10,以便从该值中删除最后一位数字。
if sum == num {} - 最后,我们将sum与数字进行比较,并返回true或false。
逻辑解释
数字是Neon数
假设我们有一个数字371,我们必须检查它是否为Armstrong数。
通过执行%运算符获取最后一位数字 - 81 % 10 = 1 Sum = 0 + 1 -> sum = 1
Num -> 81 /10 = 8
通过执行%运算符获取最后一位数字 - 8 % 10 = 8 Sum = 1 + 8 -> sum = 9
Num -> 8 /10 = 0
如你所见,sum等于初始数字,这就是为什么9是Neon数。
数字不是Neon数
假设我们有一个数字12,我们必须检查它是否为Neon数。
12的平方是144,现在我们将找到144的每位数字之和。
通过执行%运算符获取最后一位数字 -144 % 10 = 4 Sum = 0 + 4 -> sum = 4
Num -> 144 /10 = 14
通过执行%运算符获取最后一位数字 - 14 % 10 = 4 Sum = 4 + 4 -> sum = 8
Num -> 14 /10 = 1
通过执行%运算符获取最后一位数字 - 1 % 10 = 1 Sum = 8 + 1 -> sum = 9
Num -> 1 /10 = 0
结论
如你所见,sum不等于初始数字,这就是为什么12不是Neon数。这就是关于Go语言代码检查给定数字是否为Neon数的全部内容。要了解更多关于Go的信息,你可以浏览这些教程。