Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- namespace PrimeFactorsTask
- {
- public static class PrimeFactors
- {
- /// <summary>
- /// Compute the prime factors of a given natural number.
- /// A prime number is only evenly divisible by itself and 1.
- /// Note that 1 is not a prime number.
- /// </summary>
- /// <param name="number">Source number.</param>
- /// <returns>Prime factors of a given natural number.</returns>
- /// <exception cref="ArgumentException">Thrown when number less or equal 0.</exception>
- /// <example>
- /// 60 => {2, 2, 3, 5}
- /// 8 => {2, 2, 2}
- /// 12 => {2, 2, 3}
- /// 901255 => {5, 17, 23, 461}
- /// 93819012551 => {11, 9539, 894119}
- /// </example>
- public static int[] GetFactors(int number)
- {
- int numberOfDividers = 0;
- int[] dividers = new int[numberOfDividers];
- while (number != 1)
- {
- for (int i = 2; i <= number; i++)
- {
- if (number % i == 0 && IsPrime(i))
- {
- int[] copy = dividers;
- numberOfDividers++;
- dividers = new int[numberOfDividers];
- Array.Copy(copy, 0, dividers, 0, numberOfDividers - 1);
- dividers[numberOfDividers - 1] = i;
- number /= i;
- }
- }
- }
- return dividers;
- }
- private static bool IsPrime(int number)
- {
- if (number == 0 || number == 1)
- {
- return false;
- }
- else
- {
- for (int i = 2; i <= number / 2; i++)
- {
- if (number % i == 0)
- {
- return false;
- }
- }
- }
- return true;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement