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

C与えられた数のすべての素因数を効率的に印刷するためのプログラム?


このセクションでは、効率的な方法で数値のすべての素因数を取得する方法を説明します。 n =1092と言う数があり、これのすべての素因数を取得する必要があります。 1092の素因数は2、2、3、7、13です。この問題を解決するには、このルールに従う必要があります-

  • 数値が2で割り切れる場合は、2を出力し、数値を2で繰り返し除算します。

  • 今、数は奇数でなければなりません。ここで、数値の3から平方根まで、数値が現在の値で割り切れる場合は、印刷し、数値を現在の数値で割って変更してから続行します。

より良いアイデアを得るためのアルゴリズムを見てみましょう。

アルゴリズム

printPrimeFactors(n)

begin
   while n is divisible by 2, do
      print 2
      n := n / 2
   done
   for i := 3 to √𝑛, increase i by 2, do
      while n is divisible by i, do
         print i
         n := n / i
      done
   done
   if n > 2, then
      print n
   end if
end
を出力します。

#include<stdio.h>
#include<math.h>
void primeFactors(int n) {
   int i;
   while(n % 2 == 0) {
      printf("%d, ", 2);
      n = n/2; //reduce n by dividing this by 2
   }
   for(i = 3; i <= sqrt(n); i=i+2){ //i will increase by 2, to get only odd numbers
      while(n % i == 0) {
         printf("%d, ", i);
         n = n/i;
      }
   }
   if(n > 2) {
      printf("%d, ", n);
   }
}
main() {
   int n;
   printf("Enter a number: ");
   scanf("%d", &n);
   primeFactors(n);
}

出力

Enter a number: 24024
2, 2, 2, 3, 7, 11, 13,

  1. 与えられた数のすべての素因数を出力する効率的なプログラムのためのPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します。 問題の説明 −数が与えられているので、与えられた数のすべての素因数を見つける必要があります。 この問題の効率的な解決策については、以下で説明します- 例 # Python program to print prime factors import math # prime def primeFactors(n):    # no of even divisibility    while n % 2 == 0:       print (2), &n

  2. 数の一意の素因数の積のためのPythonプログラム

    この記事では、以下に示す問題ステートメントの解決策について学習します- 問題の説明 −数値nが与えられた場合、利用可能なすべての固有の素因数の積を見つけて返す必要があります。 たとえば、 Input: num = 11 Output: Product is 11 Explanation: Here, the input number is 11 having only 1 prime factor and it is 11. And hence their product is 11. アプローチ1 i=2からn+1までのforループを使用して、iがnの因数であるかどうかを確認し、次に