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

การทดสอบจำนวนเฉพาะสำหรับผลรวมของตัวเลขตำแหน่งคี่ใน C++


ภาพรวมปัญหา

ในปัญหานี้ เราได้รับตัวเลข 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.