编写一个 Java 程序来检查 Peterson 数。如果每个数字的阶乘之和等于实际数字,则任何数字都可以是 Peterson 数。这里,for(int temp = pnum; temp > 0; temp = temp/10) 用于将数字分解为单个数字。接下来,for(int i = 1; i <= rem; i++) 循环用于查找这些单个数字的阶乘。If 语句 if (sum == pnum) 检查总和是否等于实际数字,如果为真,则它是一个 Peterson 数。
package NumPrograms;
import java.util.Scanner;
public class PetersonNumber1 {
private static Scanner sc;
public static void main(String[] args) {
int fact, rem, sum = 0;
sc = new Scanner(System.in);
System.out.print("Please Enter Number to Check Peterson Num = ");
int pnum = sc.nextInt();
for(int temp = pnum; temp > 0; temp = temp/10)
{
fact = 1;
rem = temp % 10;
for(int i = 1; i <= rem; i++)
{
fact = fact * i;
}
sum = sum + fact;
}
if (sum == pnum)
{
System.out.println(pnum + " is a Peterson Number");
}
else
{
System.out.println(pnum + " is Not a Peterson Number");
}
}
}

此 Java 示例使用递归函数检查给定数字是否为 Peterson 数。calFactorial 函数将查找每个数字的阶乘,findPetersonNum 函数将把数字分解为数字并找到其阶乘总和。
package NumPrograms;
import java.util.Scanner;
public class PetersonNumber2 {
private static Scanner sc;
public static void main(String[] args) {
sc = new Scanner(System.in);
System.out.print("Please Enter Number to Check Peterson Num = ");
int pnum = sc.nextInt();
int sum = findPetersonNum(pnum);
if (sum == pnum)
{
System.out.println(pnum + " is a Peterson Number");
}
else
{
System.out.println(pnum + " is Not a Peterson Number");
}
}
public static int calFactorial(int pnum) {
if(pnum == 0 || pnum == 1)
{
return 1;
}
else
{
return pnum * calFactorial(pnum - 1);
}
}
public static int findPetersonNum(int pnum) {
int fact, rem, sum = 0;
for(; pnum > 0; pnum = pnum/10)
{
fact = 1;
rem = pnum % 10;
fact = calFactorial(rem);
System.out.println("Factorial of " + rem + " = " + calFactorial(rem));
sum = sum + calFactorial(rem);;
}
return sum;
}
}
Please Enter Number to Check Peterson Num = 145
Factorial of 5 = 120
Factorial of 4 = 24
Factorial of 1 = 1
145 is a Peterson Number
Java 程序使用 while 循环检查 Peterson 数
package NumPrograms;
import java.util.Scanner;
public class PetersonNumber3 {
private static Scanner sc;
public static void main(String[] args) {
sc = new Scanner(System.in);
System.out.print("Please Enter Number to Check Peterson Num = ");
int pnum = sc.nextInt();
int sum = findPetersonNum(pnum);
if (sum == pnum)
{
System.out.println(pnum + " is a Peterson Number");
}
else
{
System.out.println(pnum + " is Not a Peterson Number");
}
}
public static int calFactorial(int pnum) {
if(pnum == 0 || pnum == 1)
{
return 1;
}
return pnum * calFactorial(pnum - 1);
}
public static int findPetersonNum(int pnum) {
int rem, sum = 0;
while(pnum > 0)
{
rem = pnum % 10;
sum = sum + calFactorial(rem);
pnum = pnum/10;
}
return sum;
}
}
Please Enter Number to Check Peterson Num = 40585
40585 is a Peterson Number
Please Enter Number to Check Peterson Num = 125
125 is Not a Peterson Number
此 Java 程序 打印 1 到 N 或 1000 之间的 Peterson 数列表。
package NumPrograms;
import java.util.Scanner;
public class PetersonNumber4 {
private static Scanner sc;
public static void main(String[] args) {
sc = new Scanner(System.in);
System.out.print("Enter Perterson Numbers Start and End Range = ");
int start = sc.nextInt();
int end = sc.nextInt();
System.out.println("The List of Peterson Numbers from " + start + " to " + end);
for(int i = start; i <= end; i++)
{
if (findPetersonNum(i) == i)
{
System.out.println(i + " is a Peterson Number");
}
}
}
public static int calFactorial(int pnum) {
if(pnum == 0 || pnum == 1)
{
return 1;
}
return pnum * calFactorial(pnum - 1);
}
public static int findPetersonNum(int pnum) {
int rem, sum = 0;
for(;pnum > 0; pnum = pnum/10)
{
rem = pnum % 10;
sum = sum + calFactorial(rem);
}
return sum;
}
}
Enter Perterson Numbers Start and End Range = 2 10000
The List of Peterson Numbers from 2 to 10000
2 is a Peterson Number
145 is a Peterson Number