C++ 程式,用於在給定範圍內找出具有 K 個奇數約數的數字
在這個問題中,我們收到三個整數 L、R 和 k。我們的任務是在給定範圍內找出具有 k 個約數的數字。我們將找到範圍內恰好有 k 個約數的數字數量。我們將把 1 和數字本身計算為約數。
我們舉一個例子來理解這個問題:
輸入
a = 3, b = 10, k = 4
輸出
2
解釋
Numbers with exactly 3 divisors within the range 3 to 10 are 6 : divisors = 1, 2, 3, 6 8 : divisors = 1, 2, 4, 8
解決方案方法
解決問題的簡單方案是透過計算 k 個約數。因此,我們將計算範圍內所有數字的約數數量。如果約數的數量為 k,我們將在數字數量中新增 1。
舉例說明我們解決方案的工作原理的程式:
示例
#include<bits/stdc++.h>
using namespace std;
int countDivisors(int n) {
int divisors = 0;
for (int i=1; i<=sqrt(n)+1; i++) {
if (n%i==0) {
divisors++;
if (n/i != i)
divisors ++;
}
}
return divisors;
}
int countNumberKDivisors(int a,int b,int k) {
int numberCount = 0;
for (int i=a; i<=b; i++) {
if (countDivisors(i) == k)
numberCount++;
}
return numberCount;
}
int main() {
int a = 3, b = 10, k = 4;
cout<<"The count of numbers with "<<k<<" divisors is "<<countNumberKDivisors(a, b, k);
return 0;
}輸出
The count of numbers with 4 divisors is 2
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP