备战蓝桥杯---数论相关问题

目录

一、最大公约数和最小公倍数

二、素数判断

三、同余

四、唯一分解定理

五、约数个数定理

六、约数和定理

五、快速幂

六、费马小定理

七、逆元


一、最大公约数和最小公倍数

文章链接:最大公约数和最小公倍数

二、素数判断

文章链接:在Java中判断素数

三、同余

同余是一个数学概念,它描述了两个数在某个特定的模下具有相同的余数。在数学中,我们使用符号"≡"来表示同余关系。具体来说,对于给定的整数a、b和正整数m,如果a与b除以m得到的余数相等,即(a mod m) = (b mod m),我们就说a与b在模m下是同余的。

四、唯一分解定理

该定理表明,每个大于1的自然数都可以被唯一地表示为质数的乘积。

具体来说,唯一分解定理可以表述为:任何一个大于1的自然数n,都可以写成质数的乘积形式,即n = p1^a1 * p2^a2 * ... * pk^ak,其中p1, p2, ..., pk为质数,a1, a2, ..., ak为正整数,并且这种表示方式是唯一的,即如果将n分解成不同的质数乘积形式,那么这些质数和指数也是唯一确定的。

例如,对于自然数12,它可以被分解为2^2 * 3^1,其中2和3都是质数,指数分别为2和1。而这种分解方式是唯一的,即12不能被表示为其他质数乘积的形式。

java 复制代码
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Scanner;

public class Main {

    static class node{
        int a,b;//a的b次方
        node(int a,int b){
            this.a=a;
            this.b=b;
        }
    }
    public static void main(String[] args){
        Scanner scanner=new Scanner(System.in);
        int n=scanner.nextInt();//输入的数,输出是由多个质数的次方的乘积
        int t=n;
        ArrayList<node> e=new ArrayList<>();
        for(int i=2;i<=n/i;i++){
            if(n%i==0){
                int ans=0;
                while(n%i==0){
                    ans++;
                    n/=i;
                }
                e.add(new node(i,ans));
            }
        }
        if(n>1){
            e.add(new node(n,1));
        }
        System.out.print(t+"=");
        for(int i=0;i<e.size();i++){
            if(i==e.size()-1){
                System.out.print(e.get(i).a+"^"+e.get(i).b);
                break;
            }
            System.out.print(e.get(i).a+"^"+e.get(i).b+"+");
        }
    }
}

五、约数个数定理

约数个数定理是数论中的一个重要定理,它给出了一个正整数的约数个数与其质因数分解有关的关系。具体来说,如果一个正整数n可以分解为质数的乘积,即n = p1^a1 * p2^a2 * ... * pk^ak,其中p1、p2、...、pk为不同的质数,a1、a2、...、ak为正整数,则n的约数个数可以通过以下公式计算:

约数个数 = (a1 + 1) * (a2 + 1) * ... * (ak + 1)

其中,(a1 + 1)、(a2 + 1)、...、(ak + 1)分别表示每个质因数的指数加1后的值。

例如,对于正整数12,它可以分解为2^2 * 3^1,因此它的约数个数为(2+1) * (1+1) = 6。它的约数包括1、2、3、4、6和12。

六、约数和定理

通过某一个数字的唯一分解定理,可以推出约数和定理。约数和定理是指对于任意一个正整数n,它的所有约数的个数可以通过对n进行唯一分解后的指数加1的乘积来计算。

具体来说,如果将正整数n进行唯一分解,得到其质因数分解式为: n = p1^a1 * p2^a2 * p3^a3 * ... * pk^ak 其中,p1, p2, p3, ..., pk为不同的质数,a1, a2, a3, ..., ak为对应的指数。

根据唯一分解定理,n的所有约数可以通过对指数进行组合得到。对于每个质因数pi,它的指数ai可以取0到ai之间的任意整数,这样就可以得到ai+1个选择。因此,n的所有约数的个数为(a1+1) * (a2+1) * (a3+1) * ... * (ak+1)。

以20为例,将20进行唯一分解得到其质因数分解式为: 20 = 2^2 * 5^1 其中,2和5为不同的质数,指数分别为2和1。

根据约数和定理,20的所有约数的个数为(2+1) * (1+1) = 6。即20的约数有6个,分别为1、2、4、5、10和20。

也就是:

(1)2^0*5^0=1

(2)2^0*5^1=5

(3)2^1*5^0=2

(4) 2^1*5^1=10

(5) 2^2*5^0=4

(6)2^2*5^1=20

五、快速幂

文章链接:快速幂(Java实现)

六、费马小定理

费马小定理是数论中的一个重要定理,它描述了在模运算下的一种特殊性质。具体来说,费马小定理表明,如果p是一个质数,a是任意整数且不是p的倍数,那么a的p-1次方除以p的余数等于1。

数学表达式为:a^(p-1) ≡ 1 (mod p)------>(a^(p-1))%p=1(简单来说)

这里的"≡"表示模运算下的等价关系,即两个数除以p的余数相等。

举个例子来说明,假设p=7,a=3,根据费马小定理,我们可以计算3^6除以7的余数。计算过程如下:

3^6 = 729 729 ÷ 7 = 104 余 1

因此,根据费马小定理,3^6除以7的余数等于1。

七、逆元

逆元是数论中的一个重要概念,它指的是在模运算下,对于给定的整数a和模数m,存在一个整数b,使得(a * b) % m = 1。其中,a称为原元,b称为a的逆元。

举个例子来说明逆元的概念。假设我们要求解在模7下的逆元,即找到一个整数b,使得(a * b) % 7 = 1。如果我们取a = 3,那么可以发现3 * 5 = 15,15除以7的余数为1,所以5就是3在模7下的逆元。因此,5是3的逆元。

相关推荐
阿伟*rui30 分钟前
配置管理,雪崩问题分析,sentinel的使用
java·spring boot·sentinel
浮生如梦_2 小时前
Halcon基于laws纹理特征的SVM分类
图像处理·人工智能·算法·支持向量机·计算机视觉·分类·视觉检测
XiaoLeisj2 小时前
【JavaEE初阶 — 多线程】单例模式 & 指令重排序问题
java·开发语言·java-ee
paopaokaka_luck2 小时前
【360】基于springboot的志愿服务管理系统
java·spring boot·后端·spring·毕业设计
dayouziei2 小时前
java的类加载机制的学习
java·学习
励志成为嵌入式工程师3 小时前
c语言简单编程练习9
c语言·开发语言·算法·vim
捕鲸叉4 小时前
创建线程时传递参数给线程
开发语言·c++·算法
A charmer4 小时前
【C++】vector 类深度解析:探索动态数组的奥秘
开发语言·c++·算法
Yaml44 小时前
Spring Boot 与 Vue 共筑二手书籍交易卓越平台
java·spring boot·后端·mysql·spring·vue·二手书籍
小小小妮子~4 小时前
Spring Boot详解:从入门到精通
java·spring boot·后端