刚写了一个: public boolean check(int m, int n) { return check2(m > n ? m : n, m <= n ? m : n); } public boolean check2(int max, int min) { int mo = max % min; if (mo == 0) { return min == 1 ? true : false; } else { return check2(min, mo); } }
WIN_ANGEL(WIN_ANGEL) 你写的有问题,可能溢出,并且计算量太大
redduke1202(勿以分少而不回★★勿以分多而灌水) ( ) 信誉:100 Blog 加为好友 2007-04-18 14:13:10 得分: 0
public static void check(int m,int n){
int k=0;
for(k = m;0 != k%n;k+=m);
if(k==m*n){
System.out.print(m+"与"+n+"为互质数");
}else{
System.out.print(m+"与"+n+"不为互质数");
}
}
public static void main(String[] args) {
check(36,7);
}
}
应该差不多吧 楼主可以试着将check();的参数换一下 换成你想验证的2个数
public boolean check(int m, int n)
{
return check2(m > n ? m : n, m <= n ? m : n);
} public boolean check2(int max, int min)
{
int mo = max % min;
if (mo == 0) {
return min == 1 ? true : false;
}
else {
return check2(min, mo);
}
}
好像有个相减来判断的
----------------------------
广义欧几里德除法 :)