Prime Factors In C#

后端 未结 6 1867
无人共我
无人共我 2020-12-09 04:41

I want to create a program in C# 2005 which calculates prime factors of a given input. i want to use the basic and simplest things, no need to create a method for it nor arr

相关标签:
6条回答
  • 2020-12-09 05:21
    int a, b;
    Console.WriteLine("Please enter your integer: ");
    a = int.Parse(Console.ReadLine());
    
    for (b = 2; a > 1; b++)
        if (a % b == 0)
        {
            int x = 0;
            while (a % b == 0)
            {
                a /= b;
                x++;
            }
            Console.WriteLine($"{b} is a prime factor {x} times!");
        }
    Console.WriteLine("Th-Th-Th-Th-Th-... That's all, folks!");
    

    Works on my machine!

    0 讨论(0)
  • 2020-12-09 05:23
    using static System.Console;
    
    namespace CodeX
    {
        public class Program
        {
            public static void Main(string[] args)
            {
                for (int i = 0; i < 20; i++)
                {
                    if (IsPrime(i))
                    {
                        Write($"{i} ");
                    }
                }
            }
    
            private static bool IsPrime(int number)
            {
                if (number <= 1) return false;  // prime numbers are greater than 1
    
                for (int i = 2; i < number; i++)
                {
                    // only if is not a product of two natural numbers
                    if (number % i == 0)       
                        return false;
                }
    
                return true;
            }
        }
    }
    
    0 讨论(0)
  • 2020-12-09 05:27
    public static List<int> Generate(int number)
    {
        var primes = new List<int>();
    
        for (int div = 2; div <= number; div++)
            while (number % div == 0)
            {
                primes.Add(div);
                number = number / div;
            }
        
        return primes;
    }
    

    If you want to learn steps of development you can watch video here.

    0 讨论(0)
  • 2020-12-09 05:30

    You can go one better as the divisor can never be larger than the square root of the number.

     for(int div = 2; div <= Math.Sqrt(number); div++)
    
    0 讨论(0)
  • 2020-12-09 05:38

    Try this code (I incorporated various solutions in this code). Although, interpolation is not in 2005 (I think so....)

    So, anyways, try this:

    // C# Program to print all prime factors 
    using System; 
    
    namespace prime
    {
        public class Prime
        { 
    
            public static void PrimeFactors(int n)
            {
                Console.Write($"Prime Factors of {n} are:  ");
    
                // Prints all the numbers of 2  
                while (n % 2 == 0)
                {
                    Console.Write("2 ");
                    n /= 2;
                }
    
                // As no 2 can be further divided, this probably means that n
                // is now an odd number
                for(int i = 3; i <= Math.Sqrt(n); i += 2)
                {
                    while (n % i == 0)
                    {
                        Console.Write($"{i} ");
                        n /= i;
                    }
                }
    
                // This is for case if n is greater than 2
                if (n > 2)
                {
                    Console.Write($"{n} ");
                }
    
            }
    
            // Prompts user to give Input to number and passes it on 
            // the PrimeFactors function after checking its format
            public static void RunPrimeFactors()
            {
                Console.Write("Enter a number: ");
                if (int.TryParse(Console.ReadLine(), out int n))
                {
                    PrimeFactors(n);
                }
                else
                {
                    Console.WriteLine("You entered the wrong format");
                }
    
            }
            // Driver Code 
            public static void Main()
            {
                RunPrimeFactors();
            }
    
        }
    }
    
    0 讨论(0)
  • 2020-12-09 05:38

    This version lists all the factors as an explicit formula:

    static void Main(string[] args)
        {
            Console.WriteLine("Please enter your integer (0 to stop): ");
    
            int a = int.Parse(Console.ReadLine());
            while(a>0)
            {
                List<int> primeFactors = PrimeFactors(a);
                LogFactorList(primeFactors);
                a = int.Parse(Console.ReadLine());
            }
            Console.WriteLine("Goodbye.");
        }
    
    
        /// <summary>
        /// Find prime factors
        /// </summary>
        public static List<int> PrimeFactors(int a)
        {
            List<int> retval = new List<int>();
            for (int b = 2; a > 1; b++)
            {               
                while (a % b == 0)
                {
                    a /= b;
                    retval.Add(b);
                }               
            }
            return retval;
        }
    
        /// <summary>
        /// Output factor list to console
        /// </summary>
        private static void LogFactorList(List<int> factors)
        {
            if (factors.Count == 1)
            {
                Console.WriteLine("{0} is Prime", factors[0]);
            }
            else
            {
                StringBuilder sb = new StringBuilder();
                for (int i = 0; i < factors.Count; ++i)
                {
                    if (i > 0)
                    {
                        sb.Append('*');
                    }
                    sb.AppendFormat("{0}", factors[i]);
                }
                Console.WriteLine(sb.ToString());
            }
        }
    
    0 讨论(0)
提交回复
热议问题