使用 C++ 計算將給定數字 N 減少到 0 所需的操作次數
給定一個正整數 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=18 18%2==0, 18-2=16 …………………..14, 12, 10, 8, 6, 4, 2, 0 Total 10 times the operation is applied.
下面程式中使用的方法如下:
對於所有偶數 N,最小素數因子始終為 2,從偶數 N 中減去 2 將再次產生偶數。對於所有奇數,最小素數因子將是奇數,從奇數中減去奇數後,數字將變成偶數,因此 2 將再次成為最小素數因子。要找到最小素數因子,從 i=2 開始遍歷到 i,使得 i*i<N 且 N%i==0。然後總操作次數將為 count=1 + (N-i)/2。
輸入一個整數 N。
函式 N_to_Zero(int N) 獲取 N 並返回將 N 減少到 0 所需的操作次數。
將計數的初始值設定為 0。
從 i=2 開始。開始遍歷 while (i*i)<N 且 N 不能被 i 整除 (N%i!=0)。遞增 i。
如果 (i*i) 超過 N,則設定 i=N。
操作次數將為 1+(N-i)/2。
將計數設定為 1+(N-i)/2。
返回計數作為結果。
示例
#include<bits/stdc++.h>
using namespace std;
int N_to_Zero(int N){
int count = 0;
int i = 2;
while((i * i) < N && (N % i)){
i++;
}
if((i * i) > N){
i = N;
}
count = 1 + (N-i)/2;
return count;
}
int main(){
int N = 10;
cout<<"Count of operations of the given type required to reduce N to 0 are: "<<N_to_Zero(N);
return 0;
}輸出
如果我們執行上面的程式碼,它將生成以下輸出:
Count of operations of the given type required to reduce N to 0 are: 5
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP