首页  >  文章  >  Java  >  Java 中的强数

Java 中的强数

WBOY
WBOY原创
2024-08-30 16:27:10283浏览

强数是一种特殊的数,可以定义为该数的每位数字的阶乘相加,该数等于该数本身。为了更好地理解强数的概念,请看下面的示例:

广告 该类别中的热门课程 JAVA 掌握 - 专业化 | 78 课程系列 | 15 次模拟测试

145这个数字是一个很强的数字。这是因为,如果我们将这个数字的每位数字的阶乘相加,您将得到这个数字,即 145 本身,作为总和。 1! + 4! + 5! = 1 + 24 + 120 = 145。

现在让我们看一下 Java 中检查数字是否为强数字的逻辑。 下面是检查一个数字是否是强数字的描述。

  • 接受用户定义的数字或用户输入的数字。将此数字存储在用户定义的变量中。现在将此数字复制到另一个临时用户定义变量。该变量将用于计算目的。您可以将用户定义变量命名为“n”,将临时变量命名为“temp_n”。
  • 现在初始化另一个变量来存储阶乘数字之和。您可以将此变量命名为“total”。
  • 您还需要找到给定数字“n”的最后一位数字。将此结果存储在将存储结果的变量中,例如“lastdig = n % 10”。
  • 现在你可以求‘lastdig’的阶乘了。现在您可以存储该数字的阶乘并将其命名为“fact_n”。
  • 完成此操作后,您可以将阶乘添加到“总计”中。这可以通过使用 Total = Total + fact_n 来完成。
  • 现在您可以删除“n”中的最后一位数字,因为不再需要它。
  • 现在重复步骤3到步骤6,直到条件n > 0 满意。
  • 您可以为此使用循环。它可用于检查强数的条件。如果满足条件total == temp_n,则给定的数字是强数字,否则不是。

Java 中的强数示例

在Java中实现强数的逻辑非常容易;让我们看下面的几个例子。

示例#1

代码:

// Program in Java to check if a given number is a strong number or not
import java.util.*;
public class Main
{
public static void main(String[] args) {
int n,i;
int fact_n,lastdig;
Scanner sc = new Scanner(System.in);
System.out.print("\nEnter the number : " );
n = sc.nextInt();
int total = 0;
int temp_n = n;
while(n != 0)
{
i = 1;
fact_n = 1;
lastdig = n % 10;
while(i <= lastdig)
{
fact_n = fact_n * i;
i++;
}
total = total + fact_n;
n = n / 10;
}
if(total == temp_n)
System.out.println(temp_n + " is a strong number\n");
else
System.out.println(temp_n + " is not a strong number\n");
System.out.println();
}
}

输出:

Java 中的强数

上面的 Java 程序具有程序逻辑中讨论的所有变量。它首先找到该数字的模或最后一位数字,直到该数字不为零。完成此操作后,它会增加数字并将其存储在fact_n中以找出数字的阶乘。求和或加法不是在 while 循环中进行阶乘相加,直到不满足 i<=lastdig 的条件。添加“total”后,如果fact_n不等于“temp_n”,则给定的数字不是阶乘。另一方面,如果总数和fact_n相同,那么提到的数字就是强数字。

示例#2

找到强数的另一种方法是利用强数。这里的数字可以通过命令行参数传递给程序。

代码:

public class Main
{
static int f[] = new int[10];
// Finding factorial for number 0 to 9
static void FirstCompute()
{
f[0] = f[1] = 1;
for (int i = 2; i<10; ++i)
f[i] = f[i-1] * i;
}
// If x is strong true is returned
static boolean isStrong(int x)
{
int Sum_fact = 0;
// Traverse through all digits of x.
int temp_n = x;
while (temp_n>0)
{
Sum_fact += f[temp_n%10];
temp_n /= 10;
}
return (Sum_fact == x);
}
// main function
public static void main (String[] args)
{
// calling preCompute
FirstCompute();
// first pass
int x = 145;
if(isStrong(x))
{
System.out.println("Yes");
}
else
System.out.println("No");
// second pass
x = 534;
if(isStrong(x))
{
System.out.println("Yes");
}
else
System.out.println("No");
}
}

这是判断数字是否为强数字的另一种方法。在这里,您可以在运行时使用命令行参数获取用户的输入。这里的逻辑保持不变,区别在于输入在运行时作为参数发送。该程序的输出将是 YES 或 NO,具体取决于数字是否是强数字。

输出:

Java 中的强数

这里的程序正在检查两个数字,如果它们是强数字。这里它找出从 0 到 9 的所有数字的阶乘。然后 isStrong 函数验证该数字是否强。它将遍历给定数字的所有数字,直到 mod 存在。这里的 main 函数验证 precompute() 函数是否给出正确的结果。从用户接受两个号码,这导致检查并提供该号码是否是强号码。主函数首先调用该函数,该函数计算每个数字的阶乘。然后 isStrong() 函数检查每个数字的阶乘之和。它还计算它并以布尔值返回结果,该值是 true 或 false。总的来说,仅传递数字就会根据提到的输出提供结果。如果数字强,isStrong 函数将返回 true,如果不是,则返回 false。

结论

强数是指每个数字的阶乘之和就是该数本身的数。普通的 java 函数,或者使用布尔值的函数,或者仅将数字作为参数传递,就可以识别强数字。该逻辑使用简单的运算,如取模、除法和加法。

以上是Java 中的强数的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn