如何在Java中检查一个数是否为Tcefrep数?


如果一个数的反转等于其真因数之和,则称该数为Tcefrep数。

为了更清楚地说明,我们找到一个数的因数之和,并找到原始数的反转。如果和值和给定数的反转相同,那么我们可以说给定数是一个Tcefrep数。

一些Tcefrep数的例子是:6、498906、20671542……等等。

在本文中,我们将了解如何使用Java编程语言来检查一个数是否为Tcefrep数。

为您展示一些实例

实例1

输入数字为498906。

让我们使用Tcefrep数的逻辑来检查它。

给定数字的反转= 609894。

给定数字498906的真因数为= 1、2、3、6、9、18、27、54、9239、18478、27717、55434、83151、166302、249453。

以上数字之和 = 609894

正如我们在这里看到的,计算出的和值和原始数字的反转相同。

因此,498906是一个Tcefrep数。

实例2

输入数字为20671542。

让我们使用Tcefrep数的逻辑来检查它。

给定数字的反转= 24517602。

给定数字498906的真因数为= 1、2、3、6、9、18、113、226、339、678、1017、2034、10163、20326、30489、60978、91467、182934、1148419、2296838、3445257、6890514、10335771。

以上数字之和 = 24517602

正如我们在这里看到的,计算出的和值和原始数字的反转相同。

因此,20671542是一个Tcefrep数。

实例3

输入数字为12343233。

让我们使用Tcefrep数的逻辑来检查它。

给定数字的反转= 33234321。

给定数字498906的真因数为= 1、3、7、21、587773、1763319、4114411。

以上数字之和 = 18808768

正如我们在这里看到的,计算出的和值和原始数字的反转不相同。

因此,12343233不是一个Tcefrep数。

算法

步骤1 - 通过静态输入或用户输入获取输入数字。

步骤2 - 找到原始数字的反转。

步骤3 - 现在找到原始数字的所有可能的真因数并计算其和。

步骤4 - 然后将反转值与计算出的和值进行比较。

步骤5 - 如果两个值相同,则输入数字称为Tcefrep数,否则不是。

语法

要获取一个数的平方根,我们在java.lang包的Math类中有一个内置的sqrt()方法。

以下是使用该方法获取任何数的平方根的语法 -

double squareRoot = Math.sqrt(input_vale)

多种方法

我们提供了不同方法的解决方案。

  • 使用静态输入值和用户定义方法

  • 使用用户输入值和用户定义方法

让我们逐一查看程序及其输出。

方法1:使用静态输入值和用户定义方法

在这种方法中,我们声明一个变量并用一个正数初始化它,并将此数字作为参数传递给用户定义的方法,然后在方法内部使用算法,我们可以检查该数字是否为Tcefrep数。

示例

public class Main {
   
   //main method
   public static void main(String[] args) {
      
      //declare a variable and store a value by static input method
      int inputNumber = 20671542;

      
      //call the user-defined method to check for Tcefrep number
      if (checkTcefrep(inputNumber))
         System.out.print(inputNumber+" is a Tcefrep number.");
      else
         System.out.print(inputNumber+" is not a Tcefrep number.");
   }

   
   //user-defined method to find the reverse of input number
   static int reverseNumber(int n) {
      
      //declare a variable to store the reverse number
      int rev = 0;
      
      //continue the loop till n becomes zero
      while(n > 0) {
         rev = rev * 10 + n % 10;
         n = n / 10;
      }
      
      //return the reverse number
      return rev;
   }
   
   // user-defined method to find all the proper divisors and return the sum value
   static int properDivisorsSum(int n) {
      
      // Declare a variable to store the sum value
      int sum = 0;

      // Loop to find the divisors
      for (int i = 2; i<= Math.sqrt(n); i++) {
         if (n % i == 0) {
            if (i == (n / i))
               sum += i;
            else
               sum += (i + n / i);
         }
      }

      // We find divisors excluding 1 so we add one with final sum value
      return (sum + 1);
   }

   //user-defined method to check the Tcefrep number
   static boolean checkTcefrep(int n) {
      
      //return true if condition satisfied
      
      //here we are calling user defined method properDivisorsSum()
      
      //for sum of all proper divisors and calling reverseNumber() method
      
      //to get the reverse value of original number
      
      //and returning true if the result of both methods are same else return false
      return properDivisorsSum(n) == reverseNumber(n);
   } 
}

输出

20671542 is a Tcefrep number.

方法2:使用用户输入值和用户定义方法

在这种方法中,我们声明一个变量并获取用户输入的正数,并将此数字作为参数传递给用户定义的方法,然后在方法内部使用算法,我们可以检查该数字是否为Tcefrep数。

示例

import java.util.*;
public class Main {
   
   //main method
   public static void main(String[] args) {
      
      //create object of Scanner class
      Scanner sc = new Scanner(System.in);
      
      //Ask user to enter a number
      System.out.print("Enter a number: ");
      
      //declare a variable and take the value by user input
      int inputNumber = sc.nextInt();

      //call the user-defined method to check for Tcefrep number
      if (checkTcefrep(inputNumber))
         System.out.print(inputNumber+" is a Tcefrep number.");
      else
         System.out.print(inputNumber+" is not a Tcefrep number.");
   }

   //user-defined method to find the reverse of input number
   static int reverseNumber(int n) {
      
      //declare a variable to store the reverse number
      int rev = 0;
      
      //continue the loop till n becomes zero
      while(n > 0) {
         rev = rev * 10 + n % 10;
         n = n / 10;
      }
      
      //return the reverse number
      return rev;
   }

   // user-defined method to find all the proper divisors and return the sum value
   static int properDivisorsSum(int n) {
      // Declare a variable to store the sum value
      int sum = 0;

      // Loop to find the divisors
      for (int i = 2; i<= Math.sqrt(n); i++) {
         if (n % i == 0) {
            if (i == (n / i))
               sum += i;
            else
               sum += (i + n / i);
         }
      }

      // We find divisors excluding 1 so we add one with final sum value
      return (sum + 1);
   }
   
   //user-defined method to check the Tcefrep number
   static boolean checkTcefrep(int n) {
      
      //return true if condition satisfied
      
      //here we are calling user defined method properDivisorsSum()
      
      //for sum of all proper divisors and calling reverseNumber() method
      
      //to get the reverse value of original number
      
      //and returning true if the result of both methods are same else return false
      return properDivisorsSum(n) == reverseNumber(n);
   }
}

输出

Enter a number: 6
6 is a Tcefrep number.

在本文中,我们探讨了如何在Java中使用不同的方法来检查一个数字是否为Tcefrep数。

更新于: 2022年12月9日

420次浏览

开启您的职业生涯

通过完成课程获得认证

开始学习
广告