#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;
}
还是剩余方法?
答案 0 :(得分:3)
你是否找到了hcf?看起来你正试图扭转一个数字。
答案 1 :(得分:1)
除非涉及的数字真的小,否则Euclid的算法可能会更快批次。这个数字的大小是线性的(每次迭代有两个除法,而除法是最慢的指令类型之一)。 Euclid实际上是非常重要的分析 - Knuth V2上有几页,但最重要的是它通常要快得多。
如果您想使用现在使用的变体,我会从i
开始,等于两个输入中较小的一个,并以向下的方式工作。通过这种方式,第一次时间你找到一个共同的因素,你有答案,这样你就可以摆脱循环。