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

すべての素因数とその力をC++で出力します


この問題では、数Nが与えられ、その数を分割するすべての固有の素因数とその累乗を見つける必要があります。

トピックを理解するために例を見てみましょう-

Input: 55
Output:
5 power 1
11 power 1

説明-

55は5と11で割り切れます。

この問題を解決するための簡単な方法は、Nの素因数を見つけることです。次に、数Nを除算する素数の累乗を見つけて出力します。

アルゴリズム

効率的なアプローチ

Step 1: Find an array s[N+1].
s[i] = prime factor of i dividing N.
Step 2: Find all powers of i. prime = s[N] and pow = 1.
Step 3: While (N > 1) :
   Step 3.1: N /= s[N];
   Step 3.2: if(prime = s[N]) : pow++
Step 4: print prime and pow.

#include<bits/stdc++.h>
using namespace std;
void primes(int N, int s[]){
   vector <bool> prime(N+1, false);
   for (int i=2; i<=N; i+=2)
      s[i] = 2;
   for (int i=3; i<=N; i+=2){
      if (prime[i] == false){
         s[i] = i;
         for (int j=i; j*i<=N; j+=2){
            if (prime[i*j] == false){
               prime[i*j] = true;
               s[i*j] = i;
            }
         }
      }
   }
}
void generatePrimeFactors(int N) {
   int s[N+1];
   primes(N, s);
   cout<<"Factor\tPower"<<endl;
   int prime = s[N];
   int power = 1;
   while (N > 1){
      N /= s[N];
      if (prime == s[N]){
         power++;
         continue;
      }
      cout<<prime<<"\t"<<power<<endl;
      prime = s[N];
      power = 1;
   }
}
int main() {
   int N = 55;
   cout<<"The prime factors are and their powers are :\n";
   generatePrimeFactors(N);
   return 0;
}

出力

素因数はであり、それらの力は-

Factor Power
5 1
11 1

  1. C++で3と5で割り切れるすべての数値を印刷するプログラム

    このチュートリアルでは、指定された数値より3と5で割り切れるすべての数値を出力するプログラムについて説明します。 このために、Nという数字が与えられます。私たちのタスクは、3と5の両方で割り切れるN未満のすべての数字を印刷することです。 例 #include <iostream> using namespace std; //printing the numbers divisible by 3 and 5 void print_div(int N){    for (int num = 0; num < N; num++){    

  2. フリップフロップの種類とC++での変換

    フリップフロップはシーケンシャルデジタル回路です。フリップフロップにはいくつかの種類があります。ここでは、フリップフロップのタイプと、あるフリップフロップから別のフリップフロップへの変換ルールを確認します。 フリップフロップには基本的に4つのタイプがあります- SRフリップフロップ Dフリップフロップ JKフリップフロップ Tフリップフロップ SRフリップフロップ SRフリップフロップは、正のクロック遷移または負のクロック遷移のみで動作します。一方、SRラッチはイネーブル信号で動作します。 SRフリップフロップの回路図を次の図に示します。 この回路には、2つの入力SとR、および