Advertisement
yahorrr

Untitled

Apr 24th, 2022
902
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 2.00 KB | None | 0 0
  1. using System;
  2.  
  3. namespace PrimeFactorsTask
  4. {
  5.     public static class PrimeFactors
  6.     {
  7.         /// <summary>
  8.         /// Compute the prime factors of a given natural number.
  9.         /// A prime number is only evenly divisible by itself and 1.
  10.         /// Note that 1 is not a prime number.
  11.         /// </summary>
  12.         /// <param name="number">Source number.</param>
  13.         /// <returns>Prime factors of a given natural number.</returns>
  14.         /// <exception cref="ArgumentException">Thrown when number less or equal 0.</exception>
  15.         /// <example>
  16.         /// 60 => {2, 2, 3, 5}
  17.         /// 8 => {2, 2, 2}
  18.         /// 12 => {2, 2, 3}
  19.         /// 901255 => {5, 17, 23, 461}
  20.         /// 93819012551 => {11, 9539, 894119}
  21.         /// </example>
  22.         public static int[] GetFactors(int number)
  23.         {
  24.             int numberOfDividers = 0;
  25.             int[] dividers = new int[numberOfDividers];
  26.             while (number != 0)
  27.             {
  28.                 for (int i = 2; i < Math.Sqrt(number); i++)
  29.                 {
  30.                     if (number % i == 0 && IsPrime(i))
  31.                     {
  32.                         numberOfDividers++;
  33.                         dividers = new int[numberOfDividers];
  34.                         Array.Copy(dividers, 0, dividers, 0, numberOfDividers - 1);
  35.                         dividers[numberOfDividers - 1] = i;
  36.                         number /= i;
  37.                         break;
  38.                     }
  39.                 }
  40.             }
  41.  
  42.             return dividers;
  43.         }
  44.  
  45.         private static bool IsPrime(int number)
  46.         {
  47.             if (number == 0 || number == 1)
  48.             {
  49.                 return false;
  50.             }
  51.             else
  52.             {
  53.                 for (int i = 2; i <= number / 2; i++)
  54.                 {
  55.                     if (number % i == 0)
  56.                     {
  57.                         return false;
  58.                     }
  59.                 }
  60.             }
  61.  
  62.             return true;
  63.         }
  64.     }
  65. }
  66.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement