在C ++中查找任何给定数字的GCF

时间:2017-03-17 01:52:06

标签: c++ math

enter image description here

我对C ++知之甚少。我有一个分配来创建一个代码来确定任何用户输入数字的GCF。 参见随附的图片

以下是我正在考虑如何解决这个问题。如流程图所示。对于我,这说得通。但我可能错了。所以请告诉我它是否有意义。

我在编码中遇到的一个问题是,我无法通过它来编写数组"长度"取决于特定数量的因素有多少。

flow chart

修改

在我看来,好像人们可能误解了我在原帖中的意图。我想要帮助,而不是答案。我已经尽最大努力编写了代码(希望它能展示我在C ++中的知识,或者缺乏它)。 //中的所有内容都意味着它是我要输入的代码,但我输入时遇到了问题。非常感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

试试这个:

#include <iostream>
#include <vector>
std::vector<int> findFactors(int n){
    std::vector<int> factorVect;
    for (int i =0; i<=n;i++){
        if (n%i==0){
            factorVect.push_back(i);
        }

    }
    return factorVect;
}

int main()
{
    int n;
    std::cout<<"Enter n";
    std::cin>>n;
    int m;
    std::cout<<"Enter m";
    std::cin>>m;
    std::vector<int> nfactors=findFactors(n);
    std::vector<int> mfactors=findFactors(m);
    std::vector<int> gcdfactors;
    int gcd=1;
    //get factor intersection of nfactors and mfactors, and store in gcdfactors
    for(int i=0;i<=gcdfactors.size();i++){
        gcd*=gcdfactors[i];
    }
    std::cout<<gcd;
    return 0;
}

你可以弄清楚如何自己获得两组的交集。我希望这有帮助!

答案 1 :(得分:0)

int gcd(int a, int b) 
{
    return b == 0 ? a : gcd(b, a % b);
}