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

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


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

Input:N =7Output:2 2 3Explanation:7 สามารถแทนเป็นผลรวมของ 2 สองตัวและ 3 ซึ่งเป็นจำนวนเฉพาะสูงสุดที่เป็นไปได้Input :N =17Output:2 2 2 2 2 2 2 3 

แนวทางในการหาแนวทางแก้ไข

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

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

  • ตรวจสอบจำนวนคู่; หากเป็นเลขคู่ มันสามารถเกิดขึ้นได้จากผลรวมของ ( N/2 ) 2’s

  • มันสามารถเกิดขึ้นจากหนึ่งในสามและ [ (N-3) / 2 ] 2 ได้หากเป็นเลขคี่

  • ด้วยวิธีนี้ เราสามารถแทน N ด้วยผลรวมของจำนวนเฉพาะสูงสุด

ตัวอย่าง

#include ใช้เนมสเปซ std;int main(){ int N =7; // ตรวจสอบว่า N เป็นเลขคี่ // ถ้าใช่ ให้พิมพ์ 3 // และลบ 3 ออกจาก N ถ้า (N &1 ==1) { cout <<"3 +"; ยังไม่มีข้อความ -=3; } // // ทำการลบและพิมพ์ 2 // จนกระทั่ง N กลายเป็น 0 ในขณะที่ (N!=2) { cout <<" 2 +"; ยังไม่มีข้อความ -=2; } ศาล <<" 2"; คืนค่า 0;}

ผลลัพธ์

3 + 2 + 2

บทสรุป

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