使用 While 循环、For 循环和函数编写 Java 强数程序。我们还展示了如何打印 1 到 n 之间的强数。如果每个数字的阶乘之和等于给定的数字,则称为强数。
使用 While 循环的 Java 强数程序
此强数程序允许用户输入任何整数值。接下来,它使用 While 循环检查给定的数字是否为强数。
import java.util.Scanner;
public class StrongNumber1 {
private static Scanner sc;
public static void main(String[] args)
{
int Number, Temp, Reminder, Sum = 0, i, Factorial;
sc = new Scanner(System.in);
System.out.print(" Please Enter any Number : ");
Number = sc.nextInt();
Temp = Number;
while( Temp > 0)
{
Factorial = 1;
i = 1;
Reminder = Temp % 10;
while (i <= Reminder)
{
Factorial = Factorial * i;
i++;
}
System.out.println(" The Factorial of " + Reminder + " = " + Factorial);
Sum = Sum + Factorial;
Temp = Temp /10;
}
System.out.println(" The Sum of the Factorials of a Given Number " + Number + " = " + Sum);
if ( Number == Sum )
{
System.out.println("\n " + Number + " is a Strong Number");
}
else
{
System.out.println("\n " + Number + " is Not a Strong Number");
}
}
}

用户为此 Java 强数程序输入的数值:Number = 145 and Sum = 0
Temp = Number = 145
第一次迭代: while( Temp > 0)
Reminder = Temp % 10 => 145 % 10
Reminder = 5
接下来,它进入内部 While 循环。在这里,它计算 5 的阶乘 = 120。请参考 Java 中的 阶乘程序 文章。
Sum = Sum +120 => 0 + 120
Sum = 120
Temp = Temp /10 => 145 /10
Temp = 14
第二次迭代: while( 14 > 0)
从第一次迭代开始,Temp 和 Sum 的值都已更改为 Temp = 14 和 Sum = 120
Reminder = 14 % 10 = 4
接下来,它计算 4 的阶乘,即 24。
Sum = 120 + 24
Sum = 144
Temp = 14 /10
Temp = 1
第三次迭代: while( 1 > 0)
从第二次迭代开始:Temp = 1 and Sum = 144
Reminder = 1 % 10 = 0
接下来,1 的阶乘是 1
Sum = 144 + 1
Sum = 145
Temp = 1 / 10
Temp = 0
在此, Temp = 0。因此,While Loop 中的条件失败
if ( Number == Sum ) => if(145 = 145) – 条件为真。因此,给定的数字是强数
使用 For 循环的 Java 强数程序
此程序允许用户输入任何整数值。接下来,它使用 For 循环检查给定的数字是否为强数。
我们只是将上面强数示例中的 While 循环替换为 For 循环。如果您不理解 For 循环,请参考 FOR LOOP。
import java.util.Scanner;
public class Example2 {
private static Scanner sc;
public static void main(String[] args)
{
int Number, Temp, Reminder, Sum = 0, i, Factorial;
sc = new Scanner(System.in);
System.out.print(" Please Enter any Number : ");
Number = sc.nextInt();
for(Temp = Number; Temp > 0; Temp = Temp /10)
{
Factorial = 1;
Reminder = Temp % 10;
for(i = 1; i <= Reminder; i++)
{
Factorial = Factorial * i;
}
System.out.println(" The Factorial of " + Reminder + " = " + Factorial);
Sum = Sum + Factorial;
}
System.out.println(" The Sum of the Factorials " + Number + " = " + Sum);
if ( Number == Sum )
{
System.out.println("\n " + Number + " is a Strong Number");
}
else
{
System.out.println("\n " + Number + " is Not");
}
}
}
Please Enter any Number : 40585
The Factorial of 5 = 120
The Factorial of 8 = 40320
The Factorial of 5 = 120
The Factorial of 0 = 1
The Factorial of 4 = 24
The Sum of the Factorials 40585 = 40585
40585 is a Strong Number
使用方法的 Java 强数程序
此 强数程序 与第一个示例相同。但是,我们将强数逻辑分开并将其放在一个单独的方法中。
import java.util.Scanner;
public class Example3 {
private static Scanner sc;
public static void main(String[] args)
{
int Number, Temp, Reminder, Sum = 0, Factorial;
sc = new Scanner(System.in);
System.out.print(" Please Enter any Number : ");
Number = sc.nextInt();
for(Temp = Number; Temp > 0; Temp = Temp /10)
{
Factorial = 1;
Reminder = Temp % 10;
// Calling Calculate_factorial Function
Factorial = Factorial(Reminder);
System.out.println(" The Factorial of " + Reminder + " = " + Factorial);
Sum = Sum + Factorial;
}
System.out.println(" The Sum of the Factorials of a Given Number " + Number + " = " + Sum);
if ( Number == Sum )
{
System.out.println("\n " + Number + " is a Strong Number");
}
else
{
System.out.println("\n " + Number + " is Not");
}
}
public static int Factorial(int num)
{
if (num == 0 || num == 1)
return 1;
else
return num * Factorial (num -1);
}
}
Please Enter any Number : 145
The Factorial of 5 = 120
The Factorial of 4 = 24
The Factorial of 1 = 1
The Sum of the Factorials of a Given Number 145 = 145
145 is a Strong Number
Java 程序打印 1 到 N 的强数
此强数程序 接受用户输入的最小和最大值。接下来,它打印最小和最大值之间的强数列表。
import java.util.Scanner;
public class PrintStrongNumbers1 {
private static Scanner sc;
public static void main(String[] args)
{
int Number, minimum, maximum, Temp, Sum = 0;
sc = new Scanner(System.in);
System.out.print(" Please Enter the Minimum value : ");
minimum = sc.nextInt();
System.out.print(" Please Enter the Maximum value : ");
maximum = sc.nextInt();
for(Number = minimum; Number <= maximum; Number++)
{
Temp = Number;
Sum = StNum(Temp);
if (Number == Sum )
{
System.out.println(" " + Number + " is a Strong Number");
}
}
}
public static int Factorial(int num)
{
if (num == 0 || num == 1)
return 1;
else
return num * Factorial (num -1);
}
public static int StNum(int num)
{
int Temp, Reminder, Sum = 0, Factorial;
for(Temp = num; Temp > 0; Temp = Temp /10)
{
Factorial = 1;
Reminder = Temp % 10;
Factorial = Factorial(Reminder);
Sum = Sum + Factorial;
}
return Sum;
}
}
1 到 N 的强数输出
Please Enter the Minimum value : 10
Please Enter the Maximum value : 100000
145 is a Strong Number
40585 is a Strong Number