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

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

อภิปรายปัญหาที่เราได้รับตัวเลข N และเราต้องแยกตัวเลขนี้เป็นผลรวมของจำนวนเฉพาะมากที่สุด ตัวอย่างเช่น:

Input: N = 7
Output: 2 2 3
คำอธิบาย: 7 สามารถแสดงเป็นผลรวมของสอง 2 และหนึ่ง 3 ซึ่งเป็นจำนวนเฉพาะมากที่สุด

Input : N = 17
Output: 2 2 2 2 2 2 2 3

วิธีการหาคำตอบ

เพื่อแสดงตัวเลขในจำนวนเฉพาะ เราสามารถลบจำนวนเฉพาะกับ N และตรวจสอบความต่างว่าเป็นจำนวนเฉพาะหรือไม่ ถ้าความต่างเป็นจำนวนเฉพาะ เราสามารถแสดง N เป็นผลรวมของจำนวนเฉพาะสองตัว

แต่ที่นี่ เราต้องหาจำนวนเฉพาะมากที่สุด และสำหรับนั้น เราควรใช้จำนวนเฉพาะน้อยที่สุด คือ 2 และ 3 เราสามารถสร้างตัวเลขใดๆ ด้วยผลรวมของ 2 และ 3

  • ตรวจสอบตัวเลขว่าเป็นเลขคู่ ถ้าเป็นคู่ สามารถสร้างได้จากผลรวมของ (N/2) ตัว 2
  • ถ้าเป็นคี่ สามารถสร้างได้จากหนึ่ง 3 และ [(N-3)/2] ตัว 2
  • ด้วยวิธีนี้ เราสามารถแสดง N ด้วยผลรวมของจำนวนเฉพาะมากที่สุด

ตัวอย่าง

#include <bits/stdc++.h>
using namespace std;

int main(){
    int N = 7;
    // ตรวจสอบว่า N เป็นคี่
    // ถ้าใช่ พิมพ์ 3 และลบ 3 จาก N
    if (N & 1 == 1) {
        cout << "3 +";
        N -= 3;
    }
    // ต่อไปลบและพิมพ์ 2 จนกว่า N จะเป็น 0
    while (N != 2) {
        cout << " 2 +";
        N -= 2;
    }
    cout << " 2";
    return 0;
}

ผลลัพธ์

3 + 2 + 2

สรุป

ในบทช่วยสอนนี้ เราอภิปรายการแสดงตัวเลขเป็นผลรวมของจำนวนเฉพาะมากที่สุด เราอภิปรายวิธีง่ายๆ ในการแก้ปัญหานี้โดยการแสดงตัวเลขเป็นผลรวมของ 2 และ 3 เรายังอภิปรายโปรแกรม C++ สำหรับปัญหานี้ซึ่งเราสามารถทำได้กับภาษาโปรแกรมมิ่งอย่าง C, Java, Python ฯลฯ เราหวังว่าบทช่วยสอนนี้จะเป็นประโยชน์