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

โปรแกรม Java ตรวจสอบจำนวนตัวหารเป็นคู่หรือคี่

ทฤษฎี: จำนวนตัวหาร (Divisor Count)

ถ้า n = p₁^e₁ × p₂^e₂ × ... × pₖ^eₖ (prime factorization)
จำนวนตัวหาร: d(n) = (e₁+1)(e₂+1)...(eₖ+1)

d(n) เป็นเลขคี่ ⟺ n เป็น Perfect Square
เพราะ (e+1) เป็นคี่ ⟺ e เป็นเลขคู่ ⟺ ทุก exponent เป็นเลขคู่ ⟺ n เป็นกำลังสองสมบูรณ์

ตัวอย่างโค้ด (Optimal: O(1) check)


public class Demo {
    static void checkDivisorCountParity(int n) {
        int sqrt = (int) Math.sqrt(n);
        if (sqrt * sqrt == n) {
            System.out.println(n + " has ODD number of divisors (Perfect Square)");
        } else {
            System.out.println(n + " has EVEN number of divisors");
        }
    }
    
    // Brute force verification
    static int countDivisorsBrute(int n) {
        int count = 0;
        for (int i = 1; i <= Math.sqrt(n); i++) {
            if (n % i == 0) {
                count += (i * i == n) ? 1 : 2;
            }
        }
        return count;
    }
    
    public static void main(String[] args) {
        int[] tests = {1, 2, 4, 6, 9, 12, 16, 25, 36, 100};
        
        for (int n : tests) {
            checkDivisorCountParity(n);
            System.out.println("  Divisors: " + countDivisorsBrute(n));
        }
    }
}

ผลลัพธ์

1 has ODD number of divisors (Perfect Square)
  Divisors: 1
2 has EVEN number of divisors
  Divisors: 2
4 has ODD number of divisors (Perfect Square)
  Divisors: 3
6 has EVEN number of divisors
  Divisors: 4
9 has ODD number of divisors (Perfect Square)
  Divisors: 3
12 has EVEN number of divisors
  Divisors: 6
16 has ODD number of divisors (Perfect Square)
  Divisors: 5
25 has ODD number of divisors (Perfect Square)
  Divisors: 3
36 has ODD number of divisors (Perfect Square)
  Divisors: 9
100 has ODD number of divisors (Perfect Square)
  Divisors: 9

สรุป

  • Perfect Square → จำนวนตัวหารคี่ (1, 4, 9, 16, 25, 36...)
  • Non-square → จำนวนตัวหารคู่
  • ตรวจสอบได้ใน O(1) ด้วย Math.sqrt(n)