java如何判断两大整数是否互质,希望有高效点的方法

时间:2022-10-11 07:54:24
如题,做做rsa算法,遇到这个问题,希望有同行指点,谢谢

12 个解决方案

#1


怎么没人回呢,嫌分数太低了哦……

#2


产生大素数吗?可以用Miller检验算法

#3


public class CheckNumber {
  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个数

#4


不知道有没有比我更高效的算法 期望高手出现~

#5


好像有个相减来判断的

#6


刚写了一个:
  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);
  }
  }

#7


WIN_ANGEL(WIN_ANGEL) 你写的有问题,可能溢出,并且计算量太大

#8


redduke1202(勿以分少而不回★★勿以分多而灌水) ( ) 信誉:100    Blog   加为好友  2007-04-18 14:13:10  得分: 0  
 
 
   好像有个相减来判断的
  
 
----------------------------
广义欧几里德除法 :)

#9


HOHO~ CrazyGou(阿狗)(简单就是美) 你用的是递归计算 大数除以小数的 余数和小数比较 如果他们互质那 大数和小数就互质 的方法吧 我也意识到了我上面那程序的不足 本来也想按你用的那个方法写一个呢 你下手还真快 HOHO~ 既然你写了我就不写了 这也是我能想到的最好的方法了 继续看看还有没有高人给出更高效的算法

#10


这些算法感觉都不是太好,呵呵,不过还是谢谢各位!

#11


楼主 CrazyGou(阿狗)的算法还是不错的 在判断两个数是否互质的很多方法中 “大数除以小数的 余数和小数比较 如果他们互质那 大数和小数就互质” 这个方法算是最简单的了 楼主如果有什么高招欢迎帖出来让大家学习一下

#12


关注

#1


怎么没人回呢,嫌分数太低了哦……

#2


产生大素数吗?可以用Miller检验算法

#3


public class CheckNumber {
  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个数

#4


不知道有没有比我更高效的算法 期望高手出现~

#5


好像有个相减来判断的

#6


刚写了一个:
  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);
  }
  }

#7


WIN_ANGEL(WIN_ANGEL) 你写的有问题,可能溢出,并且计算量太大

#8


redduke1202(勿以分少而不回★★勿以分多而灌水) ( ) 信誉:100    Blog   加为好友  2007-04-18 14:13:10  得分: 0  
 
 
   好像有个相减来判断的
  
 
----------------------------
广义欧几里德除法 :)

#9


HOHO~ CrazyGou(阿狗)(简单就是美) 你用的是递归计算 大数除以小数的 余数和小数比较 如果他们互质那 大数和小数就互质 的方法吧 我也意识到了我上面那程序的不足 本来也想按你用的那个方法写一个呢 你下手还真快 HOHO~ 既然你写了我就不写了 这也是我能想到的最好的方法了 继续看看还有没有高人给出更高效的算法

#10


这些算法感觉都不是太好,呵呵,不过还是谢谢各位!

#11


楼主 CrazyGou(阿狗)的算法还是不错的 在判断两个数是否互质的很多方法中 “大数除以小数的 余数和小数比较 如果他们互质那 大数和小数就互质” 这个方法算是最简单的了 楼主如果有什么高招欢迎帖出来让大家学习一下

#12


关注