[计蒜客][质数]蒜头君的猜想 原创
算法标签
数学知识、质数、打表
来源
计蒜客2020蓝桥杯习题
题目简介
思路
显然我们要找的是满足条件的所有可能性
现在我们回到如何去找a+b=c中的ab
即我们可以发现特性 a+b=c,a=c-b
那么我们可以让a=1到a=n同时b=c-a来查找可能性,每获得一种可能就+1
做法1.
for (a :1 to n) && b = c - a
if(a+b==c&&prime(a)&&prime(b))cnt++;
手写prime()
这里两个数据超时
做法2
打表给出范围内所有质数表
如果a+b==c&&a\b都是质数则cnt++
AC代码
#include<iostream>
using namespace std;
const int N=8e6+10;
int a[N];
int n;
void check()
{
for(int i=2;i<=n;i++)a[i]=1;
for(int i=2;i<=n/i;i++)
if(a[i])//如果是质数
for(int j=2*i;j<=n;j+=i)//质数的倍数就不是质数(欧拉筛思想)
a[j]=0;//非质数就给0
}
int main()
{
cin>>n;
check();
int cnt=0;
for(int i=2;i<=n/2;i++)//因为a+b=c所以知用列举一半,因为后半部分一模一样
if(a[i]&&a[n-i])
cnt++;
cout<<cnt;
return 0;
}
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现