เราได้รับจำนวนเต็มบวก N เป้าหมายคือการหาจำนวนการดำเนินการที่จำเป็นในการลด N เป็น 0 การดำเนินการที่ใช้คือ N=N-P โดยที่ P เป็นตัวหารเฉพาะที่เล็กที่สุดของ P
ให้เราเข้าใจด้วยตัวอย่าง
ป้อนข้อมูล − N=17
ผลผลิต − จำนวนการดำเนินการของประเภทที่กำหนดที่ต้องลด N ถึง 0 คือ − 1
คำอธิบาย − ตัวหารเฉพาะที่เล็กที่สุดของ 17 คือ 17 ตัวมันเอง ดังนั้นการดำเนินการจะใช้เพียงครั้งเดียว 17-17=0
ป้อนข้อมูล − N=20
ผลผลิต − จำนวนการดำเนินการของประเภทที่กำหนดที่ต้องลด N ถึง 0 คือ − 10
คำอธิบาย − ตัวหารเฉพาะที่เล็กที่สุดของ 20 คือ 2 ลบ 2 ซ้ำแล้วซ้ำอีก แล้วหาตัวหารเฉพาะตัวถัดไป:
<ก่อน>20%2==0, 20-2=1818%2==0, 18-2=16………..14, 12, 10, 8, 6, 4, 2, 0 ใช้การดำเนินการทั้งหมด 10 ครั้งแนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้
สำหรับจำนวนคู่ของ N ทั้งหมด ตัวหารเฉพาะที่เล็กที่สุดจะเป็น 2 เสมอ และการลบ 2 จากเลขคู่ N จะทำให้ได้จำนวนคู่อีกครั้ง สำหรับจำนวนคี่ทั้งหมด ตัวหารเฉพาะที่น้อยที่สุดจะเป็นเลขคี่ หลังจากลบคี่ออกจากคี่ และจำนวนจะกลายเป็นคู่ ดังนั้น 2 จะกลายเป็นตัวหารเฉพาะที่เล็กที่สุดอีกครั้ง การหาตัวหารเฉพาะที่เล็กที่สุดให้เริ่มจาก i=2 ถึง i โดยที่ i*i
ใช้จำนวนเต็ม N เป็นอินพุต
ฟังก์ชัน N_to_Zero(int N) รับ N และส่งกลับจำนวนการดำเนินการที่จำเป็นในการลด N เป็น 0
ใช้ค่าเริ่มต้นนับเป็น 0
เริ่มจาก i=2 เริ่มสำรวจในขณะที่ (i*i)
ถ้า (i*i) มีค่ามากกว่า N ให้ตั้งค่า i=N
จำนวนการดำเนินการจะเป็น 1+(N-i)/2.
กำหนดให้นับเป็น 1+(N-i)/2.
ผลตอบแทนนับเป็นผลลัพธ์
หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -
ตัวอย่าง
#include
ผลลัพธ์
จำนวนการดำเนินการของประเภทที่กำหนดที่จำเป็นในการลด N เป็น 0 คือ:5