首页 > 编程知识 正文

互质数的两个数,什么情况下两个数一定是互质数

时间:2023-05-03 10:53:30 阅读:271466 作者:3713

(一)、互质的概念:公约数只有1的两个数叫做互质数。根据这一定义可以对一组数是否互质进行判断。如:2和7的公约数只有1,则它们是互质数。 

(二)、判断互质的方法大概来讲有三种

             一、根据互质的概念:

                         如果两个数的的公约数只有1,那它们是互质数。如:2和7的公约数只有1,则它们是互质数。

             二、直接判断法:

                         根据定义可总结一些规律:                         

                        (1)1和其他所有的自然数一定是互质数。如:1和3是互质数。

                        (2)两个连续的自然数一定是互质数。如:3和4是互质数。

                        (3)相邻的两个奇数一定是互质数。如:7和9是互质数。

                        (4)两个不相同的质数一定是互质数。如:11和13是互质数。

                        (5)较大数比较小数的2倍多1或少1,这两个数一定是互质数。如:27和55是互质数。

                        (6)两个数中的较小一个是质数,而较大数是合数且不是较小数的倍数,这两个数一定是互质数。如:2和21是互质数。

                        (7)两个数中的较大一个是质数,这两个数一定是互质数。如:3和23是互质数。

              三、分解质因数法:

                        (1)其中一个数较小: 两个数都是合数,把小数分解质因数,小数的因数都不是大数的因数时,这两个数互质。如:165 = 3 x 5 x11 , 5083 = 13 x 17 x23 , 大数的因数中不包括小数的因数,所以两个数互质。

                           注:合数是指自然数中除了能被1和本身整除外,还能被其他数(0除外)整除的数,也就是一个数能分解成若干个数相乘得出的。

                         (2) 两个数都较大并且值相近时,把它们的差分解质因数,差的所有质因数都不是小数的因数时,这两个数互质。如:1309 = 7 x 11 x 17和1235 , 1309 - 1235 = 74,74 = 2 x 37 和最小的数的因数没有相同的数,所以 1309 和 1235 互为质数。

                         (3)大数除以小数的余数(大于1)的所有质因数都不是小数的因数时,这两个数互质。(既辗转相除法)

                                  例如:【不停地用除数除以上一次作除法时得到的余数,直到能够除尽为止】

                                   5083 ÷ 165 = 30……133

                                   165  ÷ 133 = 1……33

                                   133 ÷ 33 = 4……1

                                   33 ÷ 1 = 33

                                   能除尽了。
                                              所以,5083 与165的最大公因数为1,是互质数。

                                   最小公倍数为
                                              5083 ×165=8388695

下面是代码实现,把要比较的数放到一个数组中,可以同时实现比较多个数。原理:两两进行比较元素的公因数是否相等,如果不相等,则互质,否则不互质。

import java.util.ArrayList;import java.util.List;/** * * <p>Title:TestDemo<p> * @author X * @编写日期:2018年9月14日 */public class TestDemo { public static void main(String[] args) { //测试 int arr[] = {2,7}; System.out.println(checkRelativelyPrime(arr));} //判断思路,比较数组中两个数的公约数是否有相同的,没有则互质,简单实现 public static boolean checkRelativelyPrime(int arr[]) { boolean flag = true; //1.先判断数组中是否有相同元素 if(checkSame(arr)) { //2.两两比较数组中的元素的公因数 for(int i = 0;i < arr.length-1;i++) { List <Integer>list1 = calcfactors(arr[i]); for(int j = i+1;j < arr.length;j++) { List <Integer>list2 = calcfactors(arr[j]); if(isRepeat(list1,list2)) { flag = true; } else { flag = false; return flag; } } } } return flag; } //计算一个数的公因数 public static List<Integer> calcfactors(int number) { List<Integer> listFactors = new ArrayList<Integer>(); //不包括1,从二开始 for(int i = 2;i<=number;i++) { if(number%i==0) { listFactors.add(i); } } for(Integer m:listFactors) { System.out.println(m); } return listFactors; } //判断数组中是否有相同的数 public static boolean checkSame(int arr[]) { for(int i = 0;i<arr.length-1;i++) { if(i+1<arr.length&&arr[i]==arr[i+1]) return false; } return true; } public static boolean isRepeat(List<Integer> List1,List<Integer> List2) { for (int i = 0; i < List1.size(); i++) { for (int j = 0; j < List2.size(); j++) { if(List1.get(i)==List2.get(j)) return false; } } return true; }}

 

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。