ภาพรวมปัญหา
ในปัญหานี้ เราได้รับตัวเลข N และต้องตรวจสอบว่าผลรวมของตัวเลขที่อยู่ในตำแหน่งคี่ (นับจากขวาไปซ้าย) เป็นจำนวนเฉพาะหรือไม่
การทดสอบจำนวนเฉพาะ (Primality Test)
เป็นอัลกอริทึมที่ใช้ตรวจสอบว่าตัวเลขที่กำหนดเป็นจำนวนเฉพาะหรือไม่
ตัวอย่าง
Input: 3425 Output: No Explanation: ผลรวมตัวเลขตำแหน่งคี่ = 5 + 4 = 9 ซึ่งไม่ใช่จำนวนเฉพาะ
วิธีแก้ปัญหา
วิธีง่ายๆ คือการรวมตัวเลขทั้งหมดที่อยู่ในตำแหน่งคี่ของตัวเลข แล้วตรวจสอบว่าผลรวมเป็นจำนวนเฉพาะหรือไม่
ตัวอย่างโค้ด C++
#include <iostream>
using namespace std;
int oddSum(int n) {
int sum = 0, pos = 1;
while(n) {
if (pos % 2 == 1)
sum += n % 10;
n = n / 10;
pos++;
}
return sum;
}
bool isPrimeNumber(int n) {
if (n <= 1) return false;
if (n <= 3) return true;
if (n % 2 == 0 || n % 3 == 0) return false;
for (int i = 5; i * i <= n; i = i + 6)
if (n % i == 0 || n % (i + 2) == 0)
return false;
return true;
}
int main() {
int n = 1734;
if (isPrimeNumber(oddSum(n)))
cout << "Sum of odd digit of the number " << n << " is prime Number.";
else
cout << "Sum of odd digit of the number " << n << " is not prime Number.";
return 0;
}
ผลลัพธ์
Sum of odd digit of the number 1734 is prime Number.