如何读取文件,在该文件中有很多数字被“,”分割,我想计算 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
我有一个文件,它有大约 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