Prime Factors In C#

一笑奈何 提交于 2019-11-27 14:06:54

问题


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 array things etc. just simple modulus. is there any code which fulfills what i desire?

here is the code for finding simple factors, i need this code to be modified to calculate prime factors

class Program {     static void Main(string[] args)     {         int a, b;         Console.WriteLine("Please enter your integer: ");         a = int.Parse(Console.ReadLine());         for (b = 1; b <= a; b++)         {             if (a % b == 0)             {                 Console.WriteLine(b + " is a factor of " + a);             }         }         Console.ReadLine();        } } 

回答1:


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("{0} is a prime factor {1} times!", b, x);     } Console.WriteLine("Th-Th-Th-Th-Th-... That's all, folks!"); 




回答2:


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.




回答3:


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++) 



回答4:


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());         }     } 



回答5:


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();         }      } } 


来源:https://stackoverflow.com/questions/5872962/prime-factors-in-c-sharp

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!