同一个页面
<script>
var  timer=null;
function check(uid)
{
var obj=document.all(uid);
if(isNaN(obj.value)||obj.value.substr(obj.value.length-1)==".")obj.value=obj.value.slice(0,-1)
timer=setTimeout("check('"+uid+"')",10);
}
function myclear(){
clearTimeout(timer)
}
function compute()
{
m=document.all.number1.value;
n=document.all.number2.value;
j=0;
k=m<n?m:n;
for(i=k;i>=1;i--)
{
if((m/i==(m-m%i)/i)&&(n/i==(n-n%i)/i))
{
j=i;
break;
}
}
document.all.result.value=j;
}
</script>
1<input type=text name=number1 onfocus=check(this.uniqueID) onblur=myclear()>
2<input type=text name=number2 onfocus=check(this.uniqueID) onblur=myclear()>
公约数<input type=text id=result readOnly>
<input type=button value=compute onclick=compute()>

解决方案 »

  1.   

    1<input type=text name=number1>
    2<input type=text name=number2>
    公约数<input type=text id=result readOnly>
    <input type=button value=compute onclick=compute(number1.value,number2.value)>
    <script>
    function compute(m,n){
    for(k=Math.min(m,n);k>0;k--)if(m%k==0&&n%k==0)break;
    alert(k);
    }
    </script>
      

  2.   

    秋水的方法在两数相差较大时速度较快,下面的gcd1()方法在两数相近时速度较快,而gcd2()则适合各种情况
    num1<input type=text name=number1>
    num2<input type=text name=number2>
    公约数<input type=text id=result readOnly>
    <input type=button value=compute onclick=compute(number1.value,number2.value)>
    <input type=button value=gcd1 onclick=gcd1(number1.value,number2.value)>
    <input type=button value=gcd2 onclick=gcd2(number1.value,number2.value)>
    <script>
    function compute(m,n){
    for(k=Math.min(m,n);k>0;k--)if(m%k==0&&n%k==0)break;
    alert(k);
    }
    function gcd1(m,n){
    with(Math){
      while(m!=n){
       a=min(m,n); b=abs(m-n); m=max(a,b);n=min(a,b);
      }
    }
    alert(m);
    }
    function gcd2(m,n){
    with(Math){
    if(m<n){t=n; n=m; m=t;}
      while(m%n!=0){
          a=n; n=min(n,m%n); m=max(a,m%a);
      }
    }
    alert(n);
    }
    </script>
      

  3.   

    num1<input type=text name=number1>
    num2<input type=text name=number2>
    公约数<input type=text id=result readOnly>
    <input type=button value=gcd onclick=result.value=(gcd(number1.value,number2.value))><script>
    function gcd(m,n){
    if(m==0)return n;
    else return gcd(n%m,m)
    }
    </script>
      

  4.   

    晕.... 这些什么数什么数的全忘光了.. :(
    以前数学就没学好. 后悔ing....