C#中的主要因素

我想在C#2005中创建一个程序来计算给定输入的素因子。 我想使用基本和最简单的东西,不需要为它创建方法,也不需要为数组等创建简单的模数。 是否有任何代码满足我的愿望?

这是用于查找简单因子的代码,我需要修改此代码以计算素因子

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

 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!"); 

适用于我的机器!

 public static List Generate(int number){ var primes = new List(); for(int div = 2; div<=number; div++){ while(number%div==0){ primes.Add(div); number = number / div; } } return primes; } 

如果您想学习开发步骤,可以在这里观看video 。

你可以更好一点,因为除数永远不会大于数字的平方根。

  for(int div = 2; div<=Math.Sqrt(number); div++) 

此版本将所有因素列为显式公式:

 static void Main(string[] args) { Console.WriteLine("Please enter your integer (0 to stop): "); int a = int.Parse(Console.ReadLine()); while(a>0) { List primeFactors = PrimeFactors(a); LogFactorList(primeFactors); a = int.Parse(Console.ReadLine()); } Console.WriteLine("Goodbye."); } ///  /// Find prime factors ///  public static List PrimeFactors(int a) { List retval = new List(); for (int b = 2; a > 1; b++) { while (a % b == 0) { a /= b; retval.Add(b); } } return retval; } ///  /// Output factor list to console ///  private static void LogFactorList(List 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()); } }