Computer >> Máy Tính >  >> Lập trình >> Java

Tìm số xấu thứ N trong Java

Một số có các thừa số nguyên tố là 2, 3 hoặc 5 được gọi là Số xấu. Một số con số xấu là:1, 2, 3, 4, 5, 6, 8, 10, 12, 15, v.v.

Chúng tôi có một số N và nhiệm vụ là tìm số Xấu xí thứ N trong dãy số Xấu xí.

Ví dụ:

Đầu vào-1:

N = 5

Đầu ra:

5

Giải thích:

Con số xấu xí thứ 5 trong dãy số xấu xí [1, 2, 3, 4, 5, 6, 8, 10, 12, 15] là 5.

Đầu vào-2:

N = 7

Đầu ra:

8

Giải thích:

Con số xấu xí thứ 7 trong dãy số xấu xí [1, 2, 3, 4, 5, 6, 8, 10, 12, 15] là 8.

Phương pháp tiếp cận để giải quyết vấn đề này

Một cách tiếp cận đơn giản để giải quyết vấn đề này là kiểm tra xem số đã cho có chia hết cho 2 hoặc 3 hoặc 5 hay không và theo dõi dãy số cho đến số đã cho. Bây giờ, hãy tìm xem số đó có thỏa mãn tất cả các điều kiện của một số xấu hay không, sau đó trả về số đó dưới dạng đầu ra.

  • Lấy đầu vào của một số N để tìm ra Số xấu thứ N.
  • Một hàm Boolean isUgly (int n) nhận một số ‘n’ làm đầu vào và trả về True nếu nó là một số xấu, nếu không thì là False.
  • Một hàm số nguyên findNthUgly (int n) nhận số ‘n’ làm đầu vào và trả về giá trị n số xấu như đầu ra.

Ví dụ

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);
   }
}

Đầu ra

The Ugly no. at position 100 is 1536.