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

นับตัวเลขที่หารด้วยตัวเลขทั้งหมดตั้งแต่ 2 ถึง 10 ใน C++


เราได้ตัวเลขมา สมมุติว่า num และภารกิจคือการคำนวณการนับจำนวนในช่วง 1 ถึง num ที่หารด้วย 2, 3, 4, 5, 6, 7, 8, 9 และ 10 ลงตัว

ป้อนข้อมูล − int num =10000

ผลผลิต − การนับตัวเลขที่หารด้วยตัวเลขทั้งหมดตั้งแต่ 2 ถึง 10 ลงตัว ได้แก่ 3

คำอธิบาย − มีตัวเลข 3 ตัวตั้งแต่ 1 ถึง 10,000 ที่หารด้วยตัวเลขทั้งหมดตั้งแต่ 2 ถึง 10 ลงตัวและนั่นคือ −

<ก่อนหน้า>2520-:1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 18, 20, 21, 24, 28, 30, 35, 36, 40, 42, 45, 56, 60, 63, 70, 72, 84, 90, 105, 120, 126, 140, 168, 180, 210, 252, 280, 315, 360, 420, 504, 630, 840, 1260, 2520.5040-:1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 24, 28, 30, 35, 36, 40, 42 , 45, 48, 56, 60, 63, 70, 72, 80, 84, 90, 105, 112, 120, 126, 140, 144, 168, 180, 210, 240, 252, 280, 315, 336, 360 , 420, 504, 560, 630, 720, 840, 1008, 1260, 1680, 2520, 50407560-:1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14, 15, 18, 20, 21, 24, 27, 28, 30, 35, 36, 40, 42, 45, 54, 56, 60, 63, 70, 72, 84, 90, 105, 108, 120, 126, 135, 140, 168, 180, 189, 210, 216, 252, 270, 280, 315, 360, 378, 420, 504, 540, 630, 756, 840, 945, 1080, 1260, 1512, 1890, 2520, 3780.

ป้อนข้อมูล − int num =20000

ผลผลิต − การนับตัวเลขที่หารด้วยตัวเลขทั้งหมดตั้งแต่ 2 ถึง 10 ลงตัวคือ − 3

คำอธิบาย − มีตัวเลข 7 ตัวตั้งแต่ 1 ถึง 10,000 ที่หารด้วยตัวเลขทั้งหมดตั้งแต่ 2 ถึง 10 ลงตัว และตัวเลขเหล่านี้คือ − 2520, 5040, 7560, 10080, 12600, 15120 และ 17640

แนวทางที่ใช้ในโปรแกรมด้านล่างมีดังนี้

อาจมีหลายวิธีในการแก้ปัญหาที่กำหนด เช่น แนวทางไร้เดียงสาและแนวทางที่มีประสิทธิภาพ มาดูแนวทางไร้เดียงสากันก่อน .

  • ใส่ตัวเลข สมมุติว่า num

  • นำอาร์เรย์และเก็บตัวเลขทั้งหมดตั้งแต่ 2 ถึง 10 ไว้ในอาร์เรย์จำนวนเต็มความยาวคงที่ซึ่งเท่ากับ 9

  • นำตัวแปรชั่วคราวมานับเพื่อเก็บผลรวมของตัวเลข และอีกตัวหนึ่งคือแฟล็กเพื่อตรวจสอบว่าตัวเลขนั้นหารได้หรือไม่

  • เริ่มการวนซ้ำ For จาก i ถึง 1 จนถึง num

  • ภายในลูป ตั้งค่า num เป็น i และดัชนีเป็น 0

  • เริ่มในขณะที่ดัชนีน้อยกว่า 9 นั่นคือขนาดของอาร์เรย์

  • ตรวจสอบ IF num % arr[index++] ==0 แล้วตั้งค่าแฟล็กเป็น 1 Else ตั้งค่าแฟล็กเป็น 0

  • ตรวจสอบว่าแฟล็ก IF เป็น 1 แล้วเพิ่มจำนวนขึ้น 1

  • จำนวนคืน

  • พิมพ์ผลลัพธ์

แนวทางที่มีประสิทธิภาพ

ดังที่เราเห็นว่ามีรูปแบบในตัวเลขที่หารด้วยตัวเลขทั้งหมดตั้งแต่ 2 ถึง 10 ลงตัว

จำนวนที่น้อยที่สุดที่หารด้วยตัวเลขทั้งหมดตั้งแต่ 2 ถึง 10 ลงตัวคือ 2520

<ก่อนหน้า>5 * 7 * 8 * 9 =2520(n =1)5 * 7 * 8 * 9 * 2 =5040(n =2)5 * 7 * 8 * 9 * 3 =7560(n =3) .

ดังที่เราเห็น 2520 เป็นปัจจัยร่วมของตัวเลขทั้งหมดที่หารด้วย 2, 3, 4, 5, 6, 7, 8, 9, 10 ลงตัว ดังนั้น หากเราหารจำนวนที่กำหนดด้วย 2520 เราจะได้ผลลัพธ์

โค้ด-1(วิธีไร้เดียงสา)

ตัวอย่าง

#include ใช้เนมสเปซ std;int count(int num){ int count =0; int แฟล็ก=0; ดัชนี int=0; int arr[9] ={2, 3, 4, 5, 6, 7, 8, 9, 10 }; สำหรับ (int i =1; i <=num; i++) { int num =i; ดัชนี=0; ในขณะที่ (ดัชนี <9) { ถ้า (จำนวน % arr [ดัชนี ++] ==0) { ธง =1; } อื่น ๆ { flag=0; หยุดพัก; } } if (flag ==1){ นับ++; } } จำนวนการส่งคืน;}int main(){ int num =10000; cout<<"การนับจำนวนที่หารด้วยตัวเลขทั้งหมดตั้งแต่ 2 ถึง 10 ลงตัวคือ "< 

ผลลัพธ์

หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -

นับจำนวนที่หารด้วยตัวเลขทั้งหมดตั้งแต่ 2 ถึง 10 ลงตัวคือ 3

Code-2(วิธีที่มีประสิทธิภาพ)

ตัวอย่าง

#include ใช้เนมสเปซ std;int main(){ int num =10000; จำนวนเต็ม =num / 2520; cout<<"นับจำนวนที่หารด้วยตัวเลขทั้งหมดตั้งแต่ 2 ถึง 10 ลงตัวคือ "<<นับ; คืนค่า 0;}

ผลลัพธ์

หากเราเรียกใช้โค้ดข้างต้น มันจะสร้างผลลัพธ์ต่อไปนี้ -

นับจำนวนที่หารด้วยตัวเลขทั้งหมดตั้งแต่ 2 ถึง 10 ลงตัวคือ 3