C++ 中統計給定數字 N 中能整除 N 的數字個數


假設給定一個數字 N,任務是找到該數字中能整除 N 的數字的個數。

需要記住的要點

  • 如果數字是 0,則應忽略它,這意味著數字 0 的計數不會增加。

  • 如果一個數字出現兩次並且它能整除該數字,那麼計數將取決於該數字出現的次數。例如,給定一個數字 2240,在這個數字中,除了 0 之外的每個數字都能整除該數字,並且數字 2 出現了兩次,那麼數字 2 的計數將為 2。

輸入 - 數字 = 2240

輸出 - 計數為 3

解釋 - 將數字分解成各個數字,結果將是 2、2、4、0。現在檢查 2 是否能整除 2240,如果可以,則增加計數,否則移動到下一個數字,在這個數字中,2、2、4 能整除 2240,所以計數將為 3,並且在任何情況下都忽略數字 0。

輸入 - 數字 = 755

輸出 - 計數為 2

解釋 - 將數字分解成各個數字,結果將是 7、5、5。現在檢查 7 是否能整除 755,如果可以,則增加計數,否則移動到下一個數字,在這個數字中,5、5 能整除 755,所以計數將為 2,並且在任何情況下都忽略數字 0。

下面程式中使用的方案如下

  • 將數字輸入到一個整數變數中,例如 num

  • 啟動迴圈,直到 num 大於 0

  • 在迴圈內部,將數字分解成各個數字,並將結果儲存在一個變數中,例如 rem

  • 檢查 rem 是否能整除該數字,如果可以,則將計數變數的值增加 1,如果不能,則不增加計數變數的值。

  • 當 rem 大於 0 時應用此檢查語句,因為我們必須忽略 0。

示例

 線上演示

#include <bits/stdc++.h>
using namespace std;
int count(int num){
   int a=num;
   int count=0,rem;
   while(a>0){
      rem=a%10;
      if(rem > 0){
         if(num%rem==0){
            count++;
         }
      }
      a=a/10;
   }
   return count;
}
int main(){
   int num = 2240;
   cout<<"Count of digits in given number "<<num<<" which divide N are: "<<count(num);
   return 0;
}

輸出

如果執行以上程式碼,將獲得以下輸出:

Count of digits in given number 2240 which divide N are: 3

更新於: 2020-06-06

2K+ 閱讀量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告