C ++
 Computer >> コンピューター >  >> プログラミング >> C ++

指定された範囲内のK個の奇数の約数を持つ数値を検索するC++プログラム


この問題では、L、R、およびkの3つの整数値が与えられます。私たちの仕事は、与えられた範囲内のKの約数を持つ数を見つけることです。正確にk個の除数を持つ範囲[L、R]の数の数を見つけます。 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

  1. 与えられた範囲の間で素数を生成するためにセグメント化されたふるいを実装するC++プログラム

    これは、セグメント化されたふるいを実装して、指定された範囲間で素数を生成するC++プログラムです。セグメント化されたふるいは、最初にSimple Sieveを使用して、√(n)以下の素数を見つけます。このアルゴリズムのアイデアは、範囲[0 ... n-1]を異なるセグメントに分割し、すべてのセグメントの素数を1つずつ計算することです。 アルゴリズム Begin    Create function to find all primes smaller than limit    using simple sieve of eratosthenes. &n

  2. エラトステネスのふるいを実装して、指定された範囲の素数を生成するC++プログラム

    これは、エラトステネスのふるいを実装して、指定された範囲間で素数を生成するC++プログラムです。この方法では、すべての要素を含む整数配列がゼロに初期化されます。 これは、ネストされたループ内で各非素元要素のインデックスが1としてマークされている場所に続きます。素数は、インデックスが0とマークされているものです。 アルゴリズム Begin    Declare an array of size n and initialize it to zero    Declare length, i, j    Read length &nbs