数论初步.质数篇

学习对象:

本期学习的是判断质数。

内容:

哈喽,好久不见,差点忘记这个号了,上次讲了最大公约数和最小公倍数问题,额,有空会去改一下文章。这一次,让我们走进质数问题。

警示,一定要把全文看完,否则得到的知识不完全

警示,一定要把全文看完,否则得到的知识不完全

警示,一定要把全文看完,否则得到的知识不完全

警示,一定要把全文看完,否则得到的知识不完全

来,让我们现在先看一下质数的定义:质数又称素数.指在一个大于1的自然数中,除了1和此整数自身外,没法被其他自然数整除的数.换句话说,只有两个正因数(1和自己)的自然数即为素数.比1大但不是素数的数称为合数.1和0既非素数也非合数.

来,让我们抓一下重点

1.大于一的数  2.除了1和此整数自身外,没法被其他自然数整除的数

兄弟们,有突破口了呀,我只需要

#include<bits/stdc++.h>
using namespace std;
long long n;
int main(){
    cin>>n;
    for(int i=2;i<n;i++){
        if(n%i!=0){//判断是否可以整除,如可以,则不符合前文总结的条件2,则不是质数
            cout<<"NO";
            return 0;//终止程序
        }
    }
    cout<<"YES";
    return 0;
}

就可以判断质数了,看,是不是符合条件2.

不过,有没有感觉少了什么{

条件有两条,你只记得条件二,真的是服了你了作者

}

阿对对对,条件一少了,这时候,同胞们就要长个心眼了,一遇到与质数有关的题目,记得关注“1”,1这个数需要特判。记住1,记住1,记住1,重要的事情说三遍。

接下来,又有一个新的问题出现了,时间复杂度超了,此时时间复杂度为O(n-1)一个数,一旦数字大起来,数字多起来。塴,程序就崩了。😭

接下来,进入重要时刻,笔记请做好。

1.

#include<bits/stdc++.h>
using namespace std;
long long n;
int main(){
    cin>>n;
    for(int i=2;i<=sqrt(n);i++){
        if(n%i!=0){//判断是否可以整除,如可以,则不符合前文总结的条件2,则不是质数
            cout<<"NO";
            return 0;//终止程序
        }
    }
    cout<<"YES";
    return 0;
}
sqrt(n)的意义,有没有人想起来。
众所周知,n的因数最大是平方根(n)。
所以说,自己理解吧

2.埃氏筛选法

这个方法的发明人好像就是第一个测量出地球周长的人,感兴趣的可以去百度看看,在此不多赘述。方法意思就是,

例如要求出n个数以内有多少个质数,(保证n<=10000000),这时候,使用之前单求个体的方法就会超时,这时候,就让我们把目光转移到埃氏筛数法。定义:要得到自然数n以内的全部素数,必须把不大于根号n的所有素数的倍数剔除,剩下的就是素数

废话不多说,上代码

#include<bits/stdc++.h>
using namespace std;
long long n,aus;
bool a[10000005];
int main(){
    cin>>n;
    for(int i=2;i<=sqrt(n);i++){
        if(a[i]==0){
            for(int j=i*2;j<=n;j+=i){
                a[j]=1;
            }
        }
    }
    for(int i=2;i<=n;i++){
        if(a[i]==1)aus++;
    }
    cout<<aus;
    return 0;
}

标准模板,加油,努力前进。

我要去写作业了,苦逼的初中生

  • 5
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值