【Java】如何判断质数、互为质数? 您所在的位置:网站首页 java怎样判断素数 【Java】如何判断质数、互为质数?

【Java】如何判断质数、互为质数?

2024-07-04 02:07| 来源: 网络整理| 查看: 265

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

质数、互为质数 一、什么是质数?二、什么是互为质数二、使用程序逻辑如何判断是质数二、使用程序逻辑如何判断N个数互为质数二、使用程序逻辑如何判断两个数互为质数

一、什么是质数?

首先看下质数的定义:只有两个正因数(1和它本身)的自然数即为质数。(比1大但不是质数的数称为合数。1和0既非质数也非合数。) 举例: 2的因数:1 ,2 3的因数:1,3

二、什么是互为质数

互质数的定义:互质数为数学中的一种概念,即两个或多个整数的公因数只有1的非零自然数。公因数只有1的两个非零自然数,叫做互质数。 举例: 2的因数:1 ,2 3的因数:1,3 我们可以看到2和3的公因数只有1,那么2,3互质。

那么是不是只有两个质数互为质数呢?当然不是,我们可以看到 4的因数:1,2,4 5的因数:1,5 那么3和4的公因数只有1,那么3,4,5互为质数。

根据互质数的定义,可总结出一些规律,利用这些规律能迅速判断一组数是否互质。 (1)两个不相同的质数一定是互质数。如:7和11、17和31是互质数。 (2)两个连续的自然数一定是互质数。如:4和5、13和14是互质数。 (3)相邻的两个奇数一定是互质数。如:5和7、75和77是互质数。 (4)1和其他所有的自然数一定是互质数。如:1和4、1和13是互质数。 (5)两个数中的较大一个是质数,这两个数一定是互质数。如:3和19、16和97是互质数。 (6)两个数中的较小一个是质数,而较大数是合数且不是较小数的倍数,这两个数一定是互质数。如:2和15、7和54是互质数。 (7)较大数比较小数的2倍多1或少1,这两个数一定是互质数。如:13和27、13和25是互质数。

二、使用程序逻辑如何判断是质数

第一种,1到n之间能不能被除了1和它本身之外的数整除。

public static boolean isPrimeNumber1(int a){ //0和1既不是质数和不是合数 if (a if (a%i == 0){ return false; } } return true; }

第二种,a = b * c;那么b,c一定小于a的平方根; 可以说明,a的其他因数的平方一定小于a.

public static boolean isPrimeNumber2(int a){ //0和1既不是质数和不是合数 if (a if (a%i == 0){ return false; } } return true; } 二、使用程序逻辑如何判断N个数互为质数

根据互为质数可以得到,质数的最大公约数是一,那么用哈希表保存各个因数的累计值,出1以外的因数,其他存在大于1的数,则不互为质数。

//判断是否互为质数 public static boolean isPrimeNumberAll(int[] nums){ HashSet set = new HashSet(); for (int num : nums) { if (num if (num%i == 0 && set.contains(i)){ return false; }else{ set.add(i); } } } return true; } 二、使用程序逻辑如何判断两个数互为质数

两数互为质数,可以用到求最大公约数是否为1

//判断是否互为质数 public static boolean isPrimeNumberTwo(int a ,int b){ // 辗转相除法 while (b != 0) { int temp = a % b; a = b; b = temp; } return a == 1 ? true: false; }

如果有错误或更好的方法,欢迎大家指出;



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有