如何读取文件,在该文件中有很多数字被“,”分割,我想计算 GCD 和 LCM

how to read a file and in that file it has many numbers it get split by "," and i want to calculate GCD and LCM

我有一个文件,它有大约 20 行,在每一行中,我必须用数字分隔,它被“,”分割,我想知道他们的 GCD 和 LCM,所以我不知道算法 128,96 11,3 18,40 6,12 14,16 18,20 30,45 20,50 100,38 131,90 800,200 45,18 39,13 50,20 80,32 75,20 它们是我的 txt 文件中的数字,我想知道它们的 LCM 和 GCM,首先,该程序应该读取 txt 文件,然后计算每一行和数字,然后将其作为输出 txt 文件导出到我的 windows . 我想在控制台的 C# 或 windows 形式或 python

中完成这一切

您可以使用以下代码将行转换为列表:

如果您的文本文件与此类似

128,96
11,3
18,40
6,12
14,16
18,20
30,45
20,50
100,38
131,90
800,200
45,18
39,13
50,20
80,32
75,20

请运行这个代码

List<string> allLinesText = File.ReadAllLines(@"FileAddress").ToList();
List<int> myNumbers = new List<int>();

foreach (var stringLine in allLinesText)
{
    foreach (var numbers in stringLine.Split(',').ToList())
    {
        myNumbers.Add(int.Parse(numbers));
    }
}

并进行计算。

但如果您的文本文件与此类似

128,96 11,3 18,40 6,12 14,16 18,20 30,45 20,50 100,38 131,90 800,200 45,18 39,13 50,20 80,32 75,20

请运行这个代码

string txtFile = File.ReadAllText(@"I:\Test.txt");
    
foreach (var groupNumber in txtFile.Split(' '))
{
   foreach (var number in groupNumber.Split(','))
   {
       myNumbers.Add(int.Parse(number));
   }
}

希望对你有所帮助

您可以使用这段代码来计算 GCD 和 LCM:

//FYI ->   num1 * num2 = GCD(num1, num2) * LCM(num1, num2)

    static int GetGCD(int num1, int num2)
    {
        while (num1 != num2)
        {
            if (num1 > num2)
                num1 = num1 - num2;

            if (num2 > num1)
                num2 = num2 - num1;
        }
        return num1;
    }

    static int GetLCM(int num1, int num2)
    {
        return (num1 * num2) / GetGCD(num1, num2);
    }

读取fileinput.txt,并将结果显示在fileouput.txt

        List<string> allLinesText = File.ReadAllLines(@"d:\fileinput.txt").ToList();

        using (StreamWriter writer = new StreamWriter("d:\fileouput.txt"))
        {

            foreach (var stringLine in allLinesText)
            {
                var numbers = stringLine.Split(',');
                var num1 = Int32.Parse(numbers[0]);// use Int32.TryParse to trap possible error
                var num2 = Int32.Parse(numbers[1]);
                var gcd = GetGCD(num1, num2);
                var lcm = GetLCM(num1, num2);

                writer.WriteLine($"num1: {num1,5} num2: {num2,5}  LCM: {lcm,7}  GCD: {gcd,7}");

            }
        }

结果 fileouput.txt:

num1:   128 num2:    96  LCM:     384  GCD:      32
num1:    11 num2:     3  LCM:      33  GCD:       1
num1:    18 num2:    40  LCM:     360  GCD:       2
num1:     6 num2:    12  LCM:      12  GCD:       6
num1:    14 num2:    16  LCM:     112  GCD:       2
num1:    18 num2:    20  LCM:     180  GCD:       2
num1:    30 num2:    45  LCM:      90  GCD:      15
num1:    20 num2:    50  LCM:     100  GCD:      10
num1:   100 num2:    38  LCM:    1900  GCD:       2
num1:   131 num2:    90  LCM:   11790  GCD:       1
num1:   800 num2:   200  LCM:     800  GCD:     200
num1:    45 num2:    18  LCM:      90  GCD:       9
num1:    39 num2:    13  LCM:      39  GCD:      13
num1:    50 num2:    20  LCM:     100  GCD:      10
num1:    80 num2:    32  LCM:     160  GCD:      16
num1:    75 num2:    20  LCM:     300  GCD:       5

fileinput.txt

128,96
11,3
18,40
6,12
14,16
18,20
30,45
20,50
100,38
131,90
800,200
45,18
39,13
50,20
80,32
75,20