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 ถึง 10000 ที่หารด้วยทุกตัวเลขตั้งแต่ 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, 5040 7560-: 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 ถึง 10000 ที่หารด้วยทุกตัวเลขตั้งแต่ 2 ถึง 10 ลงตัว และคือ − 2520, 5040, 7560, 10080, 12600, 15120 และ 17640

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

สามารถมีหลายวิธีในการแก้ปัญหาที่กำหนด คือ วิธีเรียบง่ายและวิธีที่มีประสิทธิภาพ มาดู วิธีเรียบง่าย ก่อน

  • รับตัวเลขสมมติว่า num

  • ใช้ตัวแปรชั่วคราวสองตัวคือ count เพื่อเก็บจำนวนทั้งหมด และ flag เพื่อตรวจสอบว่าตัวเลขหารลงตัวหรือไม่

  • เริ่มลูป For จาก i = 1 ถึง num

  • ภายในลูป ตั้ง num เป็น i และ index เป็น 0

  • เริ่ม while จนกว่า index จะน้อยกว่า 9 คือขนาดของอาร์เรย์

  • ตรวจสอบ IF num % arr[index++] == 0 แล้วตั้ง flag เป็น 1 มิฉะนั้นตั้ง flag เป็น 0

  • ตรวจสอบ IF flag เป็น 1 แล้วเพิ่ม count ขึ้น 1

  • คืนค่า count

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

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

ตามที่เราเห็นมีรูปแบบในตัวเลขที่หารด้วยทุกตัวเลขจาก 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 <bits/stdc++.h> using namespace std; int count(int num){    int count = 0;    int flag=0;    int index=0;    int arr[9] = {2, 3, 4, 5, 6, 7, 8, 9, 10 };    for (int i = 1; i <= num; i++){       int num = i;       index=0;       while(index<9){          if(num % arr[index++] == 0){             flag=1;          }          else{             flag=0;             break;          }       }       if (flag == 1){          count++;       }    }    return count; } int main(){    int num = 10000;    cout<<"Count numbers which are divisible by all the numbers from 2 to 10 are: "<<count(num); return 0; }

เอาต์พุต

ถ้าเรารันโค้ดด้านบนจะได้ผลลัพธ์ดังนี้ −

Count numbers which are divisible by all the numbers from 2 to 10 are: 3

โค้ด-2(วิธีที่มีประสิทธิภาพ)

ตัวอย่าง

#include <bits/stdc++.h> using namespace std; int main(){    int num = 10000;    int count = num / 2520;    cout<<"Count numbers which are divisible by all the numbers from 2 to 10 are: "<<count;    return 0; }

เอาต์พุต

ถ้าเรารันโค้ดด้านบนจะได้ผลลัพธ์ดังนี้ −

Count numbers which are divisible by all the numbers from 2 to 10 are: 3