Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

โปรแกรม Java ตรวจสอบว่าหลักเลขทุกหลักหารตัวเลขนั้นลงตัวหรือไม่

โจทย์: Self-Dividing Numbers

เลขที่ทุกหลัก (digit) หารตัวเลขนั้นลงตัว (และไม่มีหลัก 0)

ตัวอย่าง: 128 → 1|128, 2|128, 8|128 → YES
10 → มี 0 → NO
26 → 2|26 ใช่, 6|26 ไม่ใช่ → NO

ตัวอย่างโค้ด


public class Demo {
    static boolean isSelfDividing(int num) {
        int original = num;
        while (num > 0) {
            int digit = num % 10;
            if (digit == 0 || original % digit != 0) {
                return false;
            }
            num /= 10;
        }
        return true;
    }
    
    public static void main(String[] args) {
        int[] tests = {1, 12, 15, 24, 128, 10, 26, 100, 111, 124};
        
        for (int n : tests) {
            System.out.println(n + " → " + (isSelfDividing(n) ? "YES" : "NO"));
        }
        
        // หา self-dividing numbers ใน range
        System.out.println("\nSelf-dividing numbers 1-1000:");
        for (int i = 1; i <= 1000; i++) {
            if (isSelfDividing(i)) System.out.print(i + " ");
        }
    }
}

ผลลัพธ์

1 → YES
12 → YES
15 → NO
24 → YES
128 → YES
10 → NO
26 → NO
100 → NO
111 → YES
124 → YES

Self-dividing numbers 1-1000:
1 2 3 4 5 6 7 8 9 11 12 15 22 24 33 36 44 48 55 66 77 88 99 111 112 115 122 124 128 132 135 144 155 162 168 175 184 212 216 222 224 244 248 264 288 312 315 324 333 336 366 384 396 412 416 424 432 444 448 488 515 555 612 624 636 648 666 672 715 728 735 777 784 812 816 824 848 864 888 912 915 924 936 966 999

Complexity

  • Time: O(d) where d = จำนวนหลัก (≤ 10 สำหรับ int)
  • Space: O(1)

LeetCode Problem

LeetCode 728. Self Dividing Numbers - โจทย์เดียวกัน