判断质数·最高效率算法
2026-08-02 19:38:09
发布于:江苏
6阅读
0回复
0点赞
这个算法在时间限制要求很高的题目有可能会拯救你,所以一定要看注释啊~qwq
//以下为判断素数十分高效的算法
#include <iostream>
#include <math.h>
using namespace std;
bool isprime(int x){
if (x<2) return false; //小于2的正整数是合数
if (x==3||x==2){//2,3均为质数
return true;
}
if (x%6!=1&&x%6!=5) return false;//普遍规律: 对大于等于5的正整数n,一定有正整数k(k大于等于1)使(6×k-1=n)或(6×k+1=n)
for (int i=5;i<=sqrt(x);i+=6){ //初始值为5,每一次迭代+6可满足i%6==5(比6的倍数小1)或i%6==1(比6的倍数大1)
if (x%i==0){//判断是否能被条件的数整除
/*
如果x能整除i,就说明x也满足x%6==5(比6的倍数小1)或x%6==1(比6的倍数大1)
那x既然能被i整除了,且i为不是1的正整数,那么x就是合数
*/
return false;
}
}
//当所有遍历的判断均已结束后,剩下的情况只有x为质数了
return true;
}
int n;
signed main(){
ios::sync_with_stdio(false);
cin.tie(0);
/*
这两行代码纯提高输入输出运行速度
只想看算法的同志可以无视
虽然我写这行代码可能浪费了你的时间
对不起qwq~
*/
cin>>n;
cout<<(isprime(n)? "Yes":"No"); //判断,然后输出
return 0;
}
这里空空如也







有帮助,赞一个