for(i=0;i if((m%i==0)&&(n%i==0)) j=i; -----------------------------------------改成 for(i=1;i<=min(m,n);i++) if((m%i==0)&&(n%i==0)) j=i; ------------------------------------------解释: 最大公约数应该从1开始,m%i如果i=0则除0异常。 另外最大公约数应该包括两个数中得最小数,故而i------------------------ok?