如何在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的信息,你可以浏览这些教程

更新于:2022年8月29日

浏览量:258

开启你的职业生涯

通过完成课程获得认证

开始学习
广告