素数&合数&互质数&约数

质数

  • 又称素数。
  • 概念:>1的数,除了1和它自身外,不能被其他自然数整除的数叫做质数。否则称为合数。
  • 最小的质数是2,也是唯一的一个既是偶数又是质数的数。也就是说,除了2以外,质数都是奇数。

记住!!1不是质数!!!

质数的判断

求质数及其判断

合数

  • 合数指自然数中除了能被1和本身整除外,还能被其他数(0除外)整除的数。
  • 最小的合数是4。
  • 记住!!1既不属于质数也不属于合数

合数的判断

判断逻辑为:如果一个数能被至少3个数整出那么他就是合数

public class 判断是否合数 {
	public static void main(String[] args) {
		// 对一个数进行判断,是否合数
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		func(n);
		func2(n);
	}
//方法一
	public static void func(int n) {
		int cnt = 2;
		boolean isComposite = false;
		for (int i = 2; i <= Math.sqrt(n); i++) {
			if (n % i == 0) {
				cnt++;
				if (cnt >= 3) {
					isComposite = true;
					break;
				}
			}
		}
		if (isComposite) {
			System.out.println(n + "是合数");
		}
	}	

还有一种判断是:除开1,所有非素数,都是合数

//方法二
	public static void func2(int n) {
		boolean isPrime = true;
		for (int i = 2; i <= Math.sqrt(n); i++) {
			if (n % i == 0) {
				isPrime = false;
				break;
			}
		}
		if (!isPrime) {
			System.out.println(n + "是合数");
		}
	}

合数的质因数

只能过两个案例,超时了

// 给一个合数,求出质因数
public class 求解合数的质因数 {
	/*
	 * 我的思想:先求出长度为100的素数数组,然后从2开始,遍历,求出合数的质因数
	 */
	// 1260
	// 30771900
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt();
		boolean[] primes = prime(n);
		int i = 2;
		while (i <= n) {
			while (primes[i] && n % i == 0) {
				n /= i;
				System.out.print(i + " ");
			}
			i++;
		}
	}

	// 求素数
	public static boolean[] prime(int n) {
		boolean[] primes = new boolean[n + 1];
		Arrays.fill(primes, true);
		int x = 2;
		while (x < n) {
			for (int i = 2; i * x < n; i++) {
				primes[x * i] = false;
			}
			x++;
		}
		return primes;
	}

蓝桥杯练习题——算法提高:分解质因数

大佬的写法:太强了!!!

import java.util.Scanner;

public class 求解合数的质因数 {
	static int n;

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		n = sc.nextInt();
		sc.close();
		factor(n);
	}

	private static void factor(int n) {// 可以是long类型
		for (int i = 2; i * i <= n; i++) {// 枚举
			if (n % i == 0) {
				// System.out.print(i + " ");如果将下面的输出语句放在这,就是只输出不同的质因数
				while (n % i == 0) {
					System.out.print(i + " ");// 只要i是质因数就输出
					n /= i;
				}
			}
		}
		if (n > 1)
			System.out.println(n);// 必不可少
	}
}

互质数

  • 公约数只有1的两个数叫做互质数

互质数的判断

一、规律判断

  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是互质数。

二、分解判断

如果两个数a, b 都是合数:

  • 先将两个数分别分解质因数;
  • 再看两个数是否含有相同的质因数。
  • 如果没有,这两个数是互质数。

如:130和231,先将它们分解质因数:

130=2×5×13,231=3×7×11。

分解后,发现它们没有相同的质因数,则130和231是互质数。

三、求差判断:
如果两个数相差不大:

  • 先求出它们的差
  • 再看差与其中较小数是否互质。
  • 如果互质,则原来两个数一定是互质数。

如:194和201,先求出它们的差,201-194=7,因7和194互质,则194和201是互质数。
(满足上方第6条)

四、求商判断
用大数除以小数,如果除得的余数与其中较小数互质,则原来两个数是互质数。

如:317和52,317÷52=6……5,因余数5与52互质,则317和52是互质数。

参考:原文链接:https://blog.csdn.net/weixin_39958025/article/details/113388867

约数(因数)

  • 整数a除以整数b(b≠0) 除得的商正好是整数而没有余数,我们就说a能被b整除,或b能整除a。a称为b的倍数,b称为a的约数。
    在这里插入图片描述
    end.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值