Java 程序:检查间谍数

编写一个Java程序,使用while循环检查间谍数。任何数字都可以是间谍数,如果其各位数字之和等于各位数字之积。例如,132是一个间谍数,因为1 + 3 + 2 (6) 等于 1 * 3 * 2 (6)。

package NumPrograms;

import java.util.Scanner;

public class SpyNumber1 {
	private static Scanner sc;
	
	public static void main(String[] args) {
		int num, lastDigit, sum = 0, prod = 1;
		sc = new Scanner(System.in);	
		
		System.out.print("Enter any Number to Check Spy Number = ");
		num = sc.nextInt();
		int n = num;
		while(num > 0)
		{
			lastDigit = num % 10;
			sum = sum + lastDigit;
			prod = prod * lastDigit;
			num = num / 10;
		}
		
		System.out.println("The Sum of Total Digits     = " + sum);
		System.out.println("The Product of Total Digits = " + prod);

		if (sum == prod) 
		{
			System.out.println(n + " is a Spy Number");
		}
		else 
		{
			System.out.println(n +  " is Not a Spy Number");
		}
	}

}
Program to Check Spy Number

这个Java程序使用for循环检查给定的数字是否是间谍数。

package NumPrograms;

import java.util.Scanner;

public class SpyNumber2 {
	private static Scanner sc;
	
	public static void main(String[] args) {
		int num, lastDigit, sum, prod;
		sc = new Scanner(System.in);	
		
		System.out.print("Enter any Number = ");
		num = sc.nextInt();
		int n = num;
		for(sum = 0, prod = 1; num > 0; num = num /10)
		{
			lastDigit = num % 10;
			sum = sum + lastDigit;
			prod = prod * lastDigit;
		}
		
		System.out.println("The Sum of Total Digits     = " + sum);
		System.out.println("The Product of Total Digits = " + prod);

		if (sum == prod) 
		{
			System.out.println(n + " is a Spy Number");
		}
		else 
		{
			System.out.println(n +  " is Not");
		}
	}
}
Enter any Number = 132
The Sum of Total Digits     = 6
The Product of Total Digits = 6
132 is a Spy Number


Enter any Number = 121
The Sum of Total Digits     = 4
The Product of Total Digits = 2
121 is Not

在这个示例中,checkSpyNumber函数检查给定的数字是否是间谍数,并返回布尔值。

package NumPrograms;

import java.util.Scanner;

public class SpyNumber3 {
	private static Scanner sc;
	
	public static void main(String[] args) {

		sc = new Scanner(System.in);	
		
		System.out.print("Enter any Number = ");
		int num = sc.nextInt();

		if (checkSpyNumber(num) == true) 
		{
			System.out.println(num + " is a Spy Number");
		}
		else 
		{
			System.out.println(num +  " is Not");
		}
	}
	static boolean checkSpyNumber(int num)
	{
		int lastDigit, sum, prod;
		
		for(sum = 0, prod = 1; num > 0; num = num /10)
		{
			lastDigit = num % 10;
			sum = sum + lastDigit;
			prod = prod * lastDigit;
		}
		
		System.out.println("The Sum of Total Digits     = " + sum);
		System.out.println("The Product of Total Digits = " + prod);
		
		if (sum == prod) 
		{
			return true;
		}
		else
		{
			return false;
		}
	}
}
Enter any Number = 2215
The Sum of Total Digits     = 10
The Product of Total Digits = 20
2215 is Not


Enter any Number = 4211
The Sum of Total Digits     = 8
The Product of Total Digits = 8
4211 is a Spy Number

此程序检查并打印从1到N或给定范围内的间谍数。

package NumPrograms;

import java.util.Scanner;

public class SpyNumber4 {
	private static Scanner sc;
	
	public static void main(String[] args) {

		sc = new Scanner(System.in);	
		
		System.out.print("Enter Start and End Range = ");	
		int start = sc.nextInt();
		int end = sc.nextInt();
		
		System.out.println("The List of Spy Numbers from " + start + " to " + end);
		for(int i = start; i <= end; i++)
		{
			if (checkSpyNumber(i) == true) 
			{
				System.out.print(i + "  ");
			}
		}
	}
	static boolean checkSpyNumber(int num)
	{
		int lastDigit, sum, prod;
		
		for(sum = 0, prod = 1; num > 0; num = num /10)
		{
			lastDigit = num % 10;
			sum = sum + lastDigit;
			prod = prod * lastDigit;
		}
		
		if (sum == prod) 
		{
			return true;
		}
		else
		{
			return false;
		}
	}
}
Enter Start and End Range = 2 10000
The List of Spy Numbers from 2 to 10000
2  3  4  5  6  7  8  9  22  123  132  213  231  312  321  1124  1142  1214  1241  1412  1421  2114  2141  2411  4112  4121  4211