C++ 欧几里德算法在 for 循环中的实现

问题描述 投票:0回答:0

我正在研究素因子和 GCD 的程序,现在我被困在一个函数上,该函数应该在文本文件的一列中输出数字索引,从 2 开始,以 10 结束,在下一列中索引的 GCD 和从文本文件中读取的数字应在下一行输出。例如,如果读取数字 20,则第一行将输出 20,下一行将输出 2 后跟一个空格,并且 2 和 20 的 GCD 将在下一列中输出,这将重复直到索引或计数器变量达到 10。这个项目也是 c++ 类介绍的一部分,所以我的知识有限,所以任何建议都将不胜感激。

到目前为止,我已经尝试实现欧几里得算法来生成从文本文件和索引数字中获取的数字的 GCD,但我没有任何运气。我的 for 循环生成所需的索引号列是有效的,但是当我添加一个 if 语句来创建一个条件时,当索引值的模数和输入值的模数 = 0 时,将索引值存储在 GCD 变量中, for 循环停止生成所需的数字列。目前这是我的代码的样子:

else
    {
        outFile << number2 << endl;
        {
            for (int i = 2; i <= number1; i++)
            {
                int j; // temp variable
                j = i; // j will be assigned i value to meet the if statement condition

                if(j % i == 0 && number2 % i ==0) 
                {
                  cout << "  I:  " << i;
                  gcd = number2 % i; // gcd equals the remainder of the
                  cout << " Gcd:  " << gcd;
                  outFile << i << " " << gcd << endl;
                  number2 = j;
                }
c++ for-loop if-statement greatest-common-divisor euclidean-algorithm
© www.soinside.com 2019 - 2024. All rights reserved.