หาช่วงของจำนวนเต็มบวกที่ทุกตัวเป็น Composite (มีตัวหารนอกจาก 1 และตัวมันเอง) และมีความยาวเท่ากับ N
แนวคิดทางคณิตศาสตร์
พิจารณา n! (แฟกทอเรียล) จะมีตัวหาร 2, 3, 4, ..., n
ดังนั้น n! + 2, n! + 3, ..., n! + n ล้วนเป็น Composite
ช่วงที่ต้องการ: [n! + 2, n! + n] (ความยาว = n - 1)
สำหรับความยาว N ใช้ (N+1)! + 2 ถึง (N+1)! + N + 1
ตัวอย่างโค้ด
#include <iostream>
using namespace std;
long long fact(int n) {
if (n == 0) return 1;
return n * fact(n - 1);
}
void showRange(int n) {
long long a = fact(n + 1) + 2;
long long b = a + n - 1;
cout << "[" << a << ", " << b << "]";
}
int main() {
int n = 3;
showRange(n); // Output: [26, 28] → 26, 27, 28 ล้วนเป็น Composite
return 0;
}
ผลลัพธ์
[26, 28]
การตรวจสอบ
- 26 = 2 × 13 (Composite)
- 27 = 3 × 9 (Composite)
- 28 = 4 × 7 (Composite)
หมายเหตุ
โค้ดต้นฉบับใช้ fact(n + 2) + 2 ซึ่งให้ช่วง [122, 124] สำหรับ n=3 (ความยาว 3) แต่จริงๆ แล้ว fact(4)+2 = 26 ถึง 28 ก็ได้ความยาว 3 เช่นกัน ใช้ fact(n+1) ก็เพียงพอและค่าน้อยกว่า