暴力出奇迹
2024-11-17 22:39:41
发布于:广东
19阅读
0回复
0点赞
粗略推算一下,一个数只有第 取余为 或 才有可能是质数.
通过这个办法,我们可以将数据范围从 降至 .
最后配上 的判断就行了
#include <iostream>
#include <cstdio>
#pragma GCC optimize(2)
#pragma GCC optimize(3)
using namespace std;
inline bool check(int n){
if(n % 2 == 0 || n % 3 == 0 || n % 5 == 0) return 0;
for(int i = 6; i * i <= n; i += 6){
if(n % (i + 1) == 0) return 0;
if(n % (i + 5) == 0) return 0;
}
return 1;
}
int main(){
cin.tie(nullptr) -> sync_with_stdio(0);
cout.tie(nullptr) -> sync_with_stdio(0);
int n;
cin >> n;
if(n < 2){
cout << 0;
return 0;
}
int ct = 1;
if(n >= 3) ct++;
if(n >= 5) ct++;
for(int i = 6; i <= n; i += 6){
if(n >= i + 1) ct += check(i + 1);
if(n >= i + 5) ct += check(i + 5);
}
cout << ct;
return 0;
}
全部评论 4
不是暴力用不起,是埃氏筛更有性价比
3天前 来自 云南
0看看我的🤔
def s(n): if n <= 2: return 0 s=[True]*(n+1) s[0]=s[1]=False for i in range(2, int(n**0.5)+1): if s[i]: s[i*i:n+1:i]=[False]*len(s[i*i:n+1:i]) return sum(s) n=int(input()) print(s(n))
3天前 来自 湖南
0一眼埃式筛
3天前 来自 广东
0
什么意思,没看懂
5天前 来自 广东
0就是暴力判断质数的优化
4天前 来自 广东
0
???wtf?
5天前 来自 广东
0
有帮助,赞一个