问题
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