ภาพรวม
Additive Persistence คือจำนวนครั้งที่ต้องนำตัวเลขแต่ละหลักมาบวกกันซ้ำๆ จนได้ตัวเลข 1 หลัก (Single Digit)
ตัวอย่าง
1679583
1+6+7+9+5+8+3 = 39 (1 ครั้ง)
3+9 = 12 (2 ครั้ง)
1+2 = 3 (3 ครั้ง)
Additive Persistence = 3
การนำไปใช้
const sumDigit = (num, sum = 0) => {
if (num) {
return sumDigit(Math.floor(num / 10), sum + num % 10);
}
return sum;
};
const persistence = (num) => {
num = Math.abs(num);
let res = 0;
while (num > 9) {
num = sumDigit(num);
res++;
}
return res;
};
console.log(persistence(1679583)); // 3
ผลลัพธ์
3
วิธีการทันสมัย
const persistenceModern = (num) => {
let count = 0;
num = Math.abs(num);
while (num > 9) {
num = [...String(num)].reduce((s, d) => s + Number(d), 0);
count++;
}
return count;
};
ความสนใจทางคณิตศาสตร์
- Additive Persistence สูงสุดที่รู้จักในฐาน 10 คือ 11 (สำหรับตัวเลข 277777788888899)
- Multiplicative Persistence: คูณแทนบวก (Max known = 11)
- Digital Root: ผลลัพธ์สุดท้าย (Single Digit) เรียกว่า Digital Root
Digital Root (สูตรทางคณิตศาสตร์ O(1))
const digitalRoot = (num) => {
if (num === 0) return 0;
return 1 + (num - 1) % 9;
};
// ทดสอบ
console.log(digitalRoot(1679583)); // 3
console.log(digitalRoot(39)); // 3
console.log(digitalRoot(12)); // 3
การประยุกต์ใช้
- Number Theory Research
- Checksum Algorithms (ISBN, Credit Card)
- Recreational Mathematics
- Teaching Recursion/Iteration Concepts
ข้อควรระวัง
- Recursive sumDigit อาจ Stack Overflow กับตัวเลขใหญ่มาก
- JavaScript Number Precision: ปลอดภัยถึง 2⁵³-1 (15-16 digits)
- BigInt: ใช้สำหรับตัวเลขใหญ่กว่านั้น