数学知识-质数

简介: 数学知识-质数

文章目录



一、质数

227.png

二、质数的判定——试除法


题目描述


给定 n 个正整数 a i 判定每个数是否是质数。


输入格式


第一行包含整数 n。

接下来 n 行,每行包含一个正整数 a i


输出格式


共 n 行,其中第 i 行输出第 i 个正整数 a i

 是否为质数,是则输出 Yes,否则输出 No。


数据范围

228.png

具体实现

1. 实现思路

229.png


2. 实现代码

#include <bits/stdc++.h>
using namespace std;
bool is_prime(int x)
{
    //判断这个数是否大于等于 2 
    if (x < 2)
    {
        return false;
    }
    //判断是否还有别的约束
    for (int i = 2; i <= x / i; i ++ )
    {
        if (x % i == 0)
        {
            return false;
        }
    }
    return true;
}
int main()
{
    int n;
    cin >> n;
    while (n -- )
    {
        int x;
        cin >> x;
        if (is_prime(x))
        {
            puts("Yes");
        }
        else 
        {
            puts("No");
        }
    }
    return 0;
}


三、分解质因数——试除法

题目描述

230.png


输入样例

2

6

8

输出样例

2 1

3 1

(空行)

2 3

(空行)


具体实现

1. 实现思路


我们需要注意的是,质因数的底数必须是质数。

暴力写法:从小到大枚举 n nn 的所有质因数,如果 n nn 模 i ii 等于 0 00,就求出 i ii 的次数即可。


void divide(int x)
{
    for (int i = 2; i <= x; i ++ )
    {
        if (x % i == 0) //i一定是质数
        {
            int s = 0;
            while (x % i == 0) 
            {
                x /= i;
                s ++ ;
            }
            cout << i << ' ' << s << endl;
        }
    }
}


233.png

2. 实现代码

#include <bits/stdc++.h>
using namespace std;
void divide(int x)
{
    for (int i = 2; i <= x / i; i ++ )
    {
        if (x % i == 0) //i一定是质数
        {
            int s = 0;
            while (x % i == 0) 
            {
                x /= i;
                s ++ ;
            }
            cout << i << ' ' << s << endl;
        }
    }
    if (x > 1)
    {
        cout << x << ' ' << 1 << endl;
    }
    cout << endl;
}
int main()
{
    int n;
    cin >> n;
    while (n -- )
    {
        int x;
        cin >> x;
        divide(x);
    }
    return 0;
}


四、筛质数


题目描述


给定一个正整数 n,请你求出 1 ∼ n  中质数的个数。


输入格式


共一行,包含整数 n 。


输出格式


共一行,包含一个整数,表示 1 ∼ n 中质数的个数。


数据范围

234.png


1. 朴素筛法

1.1 实现思路


  • 首先,我们将所有的数放入一个数组当中,然后从前往后观察,依次将每一个数的倍数删除掉。
  • 经过这样筛选过后,剩下的数就都是质数。

1.2 实现代码

#include <bits/stdc++.h>
using namespace std;
const int N= 1000010;
//cnt表示质数的个数
int primes[N], cnt;
bool st[N];
void get_primes(int n)
{
    for (int i = 2; i <= n; i ++ )
    {
        if (st[i])
        {
            //跳出本次循环
            continue;
        }
        //primes[]数组存储质数
        primes[cnt ++ ] = i;
        //去除倍数
        for (int j = i + i; j <= n; j += i)
        {
            st[j] = true;
        }
    }
}
int main()
{
    int n;
    cin >> n;
    get_primes(n);
    cout << cnt << endl;
    return 0;
}


2. 线性筛法

2.1 实现思路

235.png

2.2 实现代码

#include <bits/stdc++.h>
using namespace std;
const int N= 1000010;
int primes[N], cnt;
bool st[N];
void get_primes(int n)
{
    for (int i = 2; i <= n; i ++ )
    {
        if (!st[i])
        {
            primes[cnt ++ ] = i;
        }
        for (int j = 0; primes[j] <= n / i; j ++ )
        {
            st[primes[j] * i] = true;
            if (i % primes[j] == 0)  //primes[j]一定是i的最小质因子
            {
                break;
            }
        }
    }
}
int main()
{
    int n;
    cin >> n;
    get_primes(n);
    cout << cnt << endl;
    return 0;
}
















相关文章
|
人工智能 自动驾驶 编译器
英伟达发布 Hopper H100 新架构芯片:面向 AI、自动驾驶汽车及 Metaverse 领域
英伟达发布 Hopper H100 新架构芯片:面向 AI、自动驾驶汽车及 Metaverse 领域
1976 0
英伟达发布 Hopper H100 新架构芯片:面向 AI、自动驾驶汽车及 Metaverse 领域
|
机器学习/深度学习 算法 TensorFlow
动物识别系统Python+卷积神经网络算法+TensorFlow+人工智能+图像识别+计算机毕业设计项目
动物识别系统。本项目以Python作为主要编程语言,并基于TensorFlow搭建ResNet50卷积神经网络算法模型,通过收集4种常见的动物图像数据集(猫、狗、鸡、马)然后进行模型训练,得到一个识别精度较高的模型文件,然后保存为本地格式的H5格式文件。再基于Django开发Web网页端操作界面,实现用户上传一张动物图片,识别其名称。
679 1
动物识别系统Python+卷积神经网络算法+TensorFlow+人工智能+图像识别+计算机毕业设计项目
|
监控 安全 前端开发
我店模式如何快速引流拓客?三方裂变+流量共享+动态分红
该商业模式通过三方裂变、流量共享和动态分红实现高效引流与锁客。商家设置3%-20%让利比例,消费转化为积分+消费券,用户获高额返利,商家低成本锁客。流量共享池整合自营商城、异业联盟和区域商圈资源,提升进店率。动态分红机制每期递增收益,最多40期,用户收益翻倍,商家获被动收入。5级分销机制和区域代理模式进一步扩大裂变效应,确保企业长期稳定增长。30万商家验证,单店3个月客流提升50%以上,区域代理年收益超百万。
|
人工智能 物联网 Linux
操作系统的演变:从单一到多元化
本文将探讨操作系统的发展历史,从最初的单一操作系统到现在的多元化操作系统。我们将分析操作系统的演变过程,以及它对计算机科学和技术的影响。同时,我们还将讨论现代操作系统的特点和挑战,以及未来操作系统的发展趋势。
274 31
|
机器学习/深度学习 传感器 自然语言处理
【博士每天一篇文献-综述】A Systematic Review of Echo State Networks from Design to Application
本文系统回顾了回声状态网络(ESN)从设计到应用的全过程,探讨了其在多个领域的实际应用,并分析了不同结构的ESN模型如经典ESN、DeepESN和组合模型的性能,以及它们在时间序列预测和动态系统建模中的有效性。
419 1
【博士每天一篇文献-综述】A Systematic Review of Echo State Networks from Design to Application
|
JavaScript 前端开发 Java
面试官:假如有几十个请求,如何去控制并发?
面试官:假如有几十个请求,如何去控制并发?
|
机器学习/深度学习 人工智能
超越Sora极限,120秒超长AI视频模型诞生!
【5月更文挑战第1天】 StreamingT2V技术突破AI视频生成界限,实现120秒超长连贯视频,超越Sora等传统模型。采用自回归方法,结合短期记忆的条件注意模块和长期记忆的外观保持模块,保证内容连贯性和动态性。在实际应用中,展示出优秀的动态性、连贯性和图像质量,但仍有优化空间,如处理复杂场景变化和连续性问题。[链接](https://arxiv.org/abs/2403.14773)
383 3
支付系统09----支付宝支付,接入准备,绑定应用,APPID绑定商家中心
支付系统09----支付宝支付,接入准备,绑定应用,APPID绑定商家中心
回调函数在异步编程中的作用与实现方式
回调函数在异步编程中的作用与实现方式
|
编解码 定位技术
12米与30米TanDEM-X数字高程模型DEM数据的下载申请方法
12米与30米TanDEM-X数字高程模型DEM数据的下载申请方法
394 2

热门文章

最新文章

下一篇
开通oss服务