ที่นี่เราจะดูเลข Osiris (Osiris Number) คือเลขที่เท่ากับผลรวมของการเรียงสับเปลี่ยน (Permutations) ของตัวเลขย่อยของมันเอง สมมติเลขคือ 132 ถ้าคำนวณ {12 + 21 + 13 + 31 + 23 + 32} ก็จะได้ 132 เช่นกัน ดังนั้น 132 คือเลข Osiris เราต้องตรวจสอบว่าเลขที่กำหนดเป็นเลข Osiris หรือไม่
แนวทางง่ายๆ: หากวิเคราะห์เลข แต่ละหลักจะปรากฏ 2 ครั้ง (หนึ่งครั้งเป็นหลักสิบ และอีกครั้งเป็นหลักหน่วย) ดังนั้นเราสามารถตรวจสอบได้โดยคูณ 11 กับผลรวมของตัวเลขแต่ละหลัก
อัลกอริทึม
isOsirisNumber(n) -
Begin
a := last digit
b := second digit
c := first digit
digit_sum := a + b + c
if n = (22 * digit_sum), then
return true
end if
return false
Endตัวอย่าง
#include <iostream>
using namespace std;
bool isOsirisNumber(int n) {
int a = n % 10;
int b = (n / 10) % 10;
int c = n / 100;
int sum = a + b + c;
if (n == (22 * sum)) {
return true;
}
return false;
}
int main() {
int n = 132;
if (isOsirisNumber(n))
cout << "This is Osiris number";
else
cout << "This is Not Osiris number";
}ผลลัพธ์
This is Osiris number