ホームページ >Java >&#&チュートリアル >Java で N 番目の醜い数字を見つける

Java で N 番目の醜い数字を見つける

PHPz
PHPz転載
2023-08-20 18:25:07835ブラウズ

Java で N 番目の醜い数字を見つける

#素因数が 2、3、または 5 のみの数は、醜い数と呼ばれます。醜い数字には、1、2、3、4、5、6、8、10、12、15 などがあります。

数値 N があり、課題は、一連の醜い数値の中から N 番目の醜い数値を見つけることです。

例:

入力-1:

N = 5

出力:

5

説明:

醜い数字のシーケンス [1、2、3、4、5、6、8、10、12、15] の 5 番目の醜い数字は 5 です。 .

入力-2:

N = 7

出力:

8

説明:

醜い数字のシーケンス [1、2、3、4、5、6、8、10、12、15] では、7 番目の醜い数字は 8 です。

この問題の解決方法

この問題を解決する簡単な方法は、指定された数値が 2、3、または 5 で割り切れるかどうかを確認し、指定された数値になるまでシーケンスをたどることです。ここで、数値がすべての醜い数値の条件を満たすかどうかを調べ、その数値を出力として返します。

    数字 N を入力すると、N 番目の醜い数字が見つかります。
  • ブール関数 isUgly(int n) は数値「n」を入力として受け取り、それが醜い数値の場合は True を返し、それ以外の場合は False を返します。
  • 整数関数 findNthUgly(int n) は、「n」を入力として受け取り、n 番目の醜い数値を出力として返します。

デモ

public class UglyN {
   public static boolean isUglyNumber(int num) {
      boolean x = true;
      while (num != 1) {
         if (num % 5 == 0) {
            num /= 5;
         }
         else if (num % 3 == 0) {
            num /= 3;
         }
         // To check if number is divisible by 2 or not
         else if (num % 2 == 0) {
            num /= 2;
         }
         else {
            x = false;
            break;
         }
      }
      return x;
   }
   public static int nthUglyNumber(int n) {
      int i = 1;
      int count = 1;
      while (n > count) {
         i++;
         if (isUglyNumber(i)) {
            count++;
         }
      }
      return i;
   }
   public static void main(String[] args) {
      int number = 100;
      int no = nthUglyNumber(number);
      System.out.println("The Ugly no. at position " + number + " is " + no);
   }
}

出力

The Ugly no. at position 100 is 1536.

以上がJava で N 番目の醜い数字を見つけるの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。