这是找到hcf的好方法吗?

时间:2011-01-26 16:39:12

标签: c++ algorithm

#include <iostream>
using namespace std;
int main(){
     int a,b,hcf=0,i=1;
     cout<<"Enter Value  :";
     cin>>a;

     cout<<"Enter value  :";
     cin>>b;

    while(i<=a || i<=b){
         if(a%i ==0 && b%i ==0)hcf=i;
         ++i;
        }        
 return 0;
    }

还是剩余方法?

2 个答案:

答案 0 :(得分:3)

你是否找到了hcf?看起来你正试图扭转一个数字。

答案 1 :(得分:1)

除非涉及的数字真的小,否则Euclid的算法可能会更快批次。这个数字的大小是线性的(每次迭代有两个除法,而除法是最慢的指令类型之一)。 Euclid实际上是非常重要的分析 - Knuth V2上有几页,但最重要的是它通常要快得多。

如果您想使用现在使用的变体,我会从i开始,等于两个输入中较小的一个,并以向下的方式工作。通过这种方式,第一次时间你找到一个共同的因素,你有答案,这样你就可以摆脱循环。