编写一个Java程序来检查数字是否为技术数。例如,如果一个数字有偶数位,它就会被分成两个部分。如果这两部分的平方和等于实际数字,那么它就是一个技术数。所以,在这个例子中,我们首先计算数字的总位数,如果它是偶数,我们就把它分成两半。
接下来,我们计算这两半的和,并对结果进行平方。If语句检查实际数字是否等于平方,如果是,则为技术数。
package NumPrograms;
import java.util.Scanner;
public class TechNumber1 {
private static Scanner sc;
public static void main(String[] args) {
sc = new Scanner(System.in);
System.out.print("Please Enter Number to Check Tech Number = ");
int tNum = sc.nextInt();
int temp, firstHalf, secondHalf, Sqsum = 0, count = 0;
for(temp = tNum; temp > 0; temp = temp/10)
{
count = count + 1;
}
if(count % 2 == 0)
{
temp = tNum;
firstHalf = temp % (int)Math.pow(10, count /2);
secondHalf = temp / (int)Math.pow(10, count /2);
Sqsum = (firstHalf + secondHalf) * (firstHalf + secondHalf);
if(tNum == Sqsum)
{
System.out.println(tNum + " is a Tech Number");
}
else
{
System.out.println(tNum + " is Not a Tech Number");
}
}
else
{
System.out.println(tNum + " is Not a Tech Number");
}
}
}

在这个技术数程序中,digitCount计算数字的位数,sumOfToHalfs将数字分成两半并计算两半的平方和。
package NumPrograms;
import java.util.Scanner;
public class TechNumber2 {
private static Scanner sc;
public static void main(String[] args) {
sc = new Scanner(System.in);
System.out.print("Please Enter Number = ");
int tNum = sc.nextInt();
int count = digitCount(tNum);
if(count % 2 == 0 && tNum == sumOfToHalfs(tNum, count))
{
System.out.println(tNum + " is a Tech Number");
}
else
{
System.out.println(tNum + " is Not");
}
}
static int digitCount(int tNum)
{
int count = 0;
for(; tNum > 0; tNum = tNum/10)
{
count = count + 1;
}
return count;
}
static int sumOfToHalfs(int tNum, int count)
{
int firstHalf, secondHalf, Sqsum = 0;
firstHalf = tNum % (int)Math.pow(10, count /2);
secondHalf = tNum / (int)Math.pow(10, count /2);
Sqsum = (firstHalf + secondHalf) * (firstHalf + secondHalf);
return Sqsum;
}
}
Please Enter Number = 2025
2025 is a Tech Number
Please Enter Number = 2050
2050 is Not
Java程序用于检查并打印给定范围内的技术数
此程序将检查数字是否为技术数,然后在给定范围内打印这些值。
package NumPrograms;
import java.util.Scanner;
public class TechNumber3 {
private static Scanner sc;
public static void main(String[] args) {
sc = new Scanner(System.in);
System.out.print("Enter Tech Numbers Start and End Range = ");
int start = sc.nextInt();
int end = sc.nextInt();
int firstHalf, secondHalf, Sqsum = 0;
System.out.println("The List of Tech Numbers from " + start + " to " + end);
for(int i = start; i <= end; i++)
{
firstHalf = i % 100;
secondHalf = i / 100;
Sqsum = (firstHalf + secondHalf) * (firstHalf + secondHalf);
if(i == Sqsum)
{
System.out.println(i);
}
}
}
}
Enter Tech Numbers Start and End Range = 1 10000
The List of Tech Numbers from 1 to 10000
1
2025
3025
9801
10000
这是从1到N打印技术数的另一种方法。请参考Java程序。
package NumPrograms;
import java.util.Scanner;
public class TechNumber4 {
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 Techn Numbers from " + start + " to " + end);
for(int i = start; i <= end; i++)
{
if(i == sumOfToHalfs(i))
{
System.out.println(i);
}
}
}
static int digitCount(int tNum)
{
int count = 0;
for(; tNum > 0; tNum = tNum/10)
{
count = count + 1;
}
return count;
}
static int sumOfToHalfs(int tNum)
{
int firstHalf, secondHalf, Sqsum = 0;
int count = digitCount(tNum);
if(count % 2 == 0)
{
firstHalf = tNum % (int)Math.pow(10, count /2);
secondHalf = tNum / (int)Math.pow(10, count /2);
Sqsum = (firstHalf + secondHalf) * (firstHalf + secondHalf);
}
return Sqsum;
}
}
Enter Start and End Range = 2 10000
The List of Techn Numbers from 2 to 10000
81
2025
3025
9801