[计蒜客][质数]蒜头君的猜想 原创

算法标签

数学知识、质数、打表

来源

计蒜客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;
}
posted @   俺叫西西弗斯  阅读(0)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 25岁的心里话
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示