特定の入力の素因数を計算するプログラムを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<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;
}
開発のステップを学びたい場合は、 ここでビデオを見る 。
除数が数値の平方根より大きくなることは決してないので、1つ上手く行くことができます。
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<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());
}
}
このコードを試してください(このコードにさまざまなソリューションを組み込みました)。ただし、補間は2005年にはありません(そう思います...)
だから、とにかく、これを試してみてください:
// 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();
}
}
}