Golang 如何检查输入的数字是否为Neon数

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的知识,你可以探索这些 教程 。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程