首页 > 其他分享 >哥德巴赫猜想

哥德巴赫猜想

时间:2023-04-14 20:11:38浏览次数:36  
标签:prime cnt return int mid exist 哥德巴赫猜想

#include <iostream>
#include <cstring>
using namespace std;

const int maxn = 100000;
int prime[maxn] = { 0 }, visit[maxn] = { 0 }, cnt = 0, n;
void linearFilter() {
    memset(prime, 0, n * sizeof(int));
    memset(visit, 0, (n + 10) * sizeof(int));
    cnt = 0;
    for (int i = 2; i <= n; i++) {
        if (!visit[i])prime[cnt++] = i;
        for (int j = 0; j < cnt && i * prime[j] <= n; j++) {
            visit[i * prime[j]] = 1;
            if (i % prime[j] == 0)break;
        }
    }
}
bool exist(int k, int l, int r) {
    if (l >= r) {
        return k == prime[l];
    }
    int mid = (l + r) / 2;
    if (prime[mid] > k) {
        return exist(k, l, mid - 1);
    }
    else if (prime[mid] < k) {
        return exist(k, mid + 1, r);
    }
    else {
        return true;
    }
}
int main() {
    while (cin >> n) {
        linearFilter();
        int i, k;
        for (i = 2; i < n; i++) {
            if (exist(n - i, 0, cnt - 1)) {
                k = n - i;
                break;
            }
        }
        cout << i << "+" << k << endl;
    }
    return 0;
}

 

标签:prime,cnt,return,int,mid,exist,哥德巴赫猜想
From: https://www.cnblogs.com/lhf123/p/17319809.html

相关文章

  • 验证“哥德巴赫猜想”
    数学领域著名的“哥德巴赫猜想”的大致意思是:任何一个大于2的偶数总能表示为两个素数之和。比如:24=5+19,其中5和19都是素数。本实验的任务是设计一个程序,验证20亿以内的偶数都可以分解成两个素数之和。输入格式:输入在一行中给出一个(2,2000000000]范围内的偶数N。输出格式:......
  • (5)使用函数验证哥德巴赫猜想:任何一个不小于6的偶数均可表示为两个奇和。输入两个正整数
    #include<stdio.h>#include<math.h>intprime(intm){  inti;  if(m<2)    return0;  for(i=2;i<=sqrt(m);i++){    if(!(m%i))      return0;  }  return1;}intmain(){  intm,n,flag;  printf("Enterm,......
  • 《强哥德巴赫猜想的计算机验证性程序》 回复
    《强哥德巴赫猜想的计算机验证性程序》      https://tieba.baidu.com/p/8286004205      回复  5楼 20楼 23楼  @思维机器  ,  ......
  • C语言:哥德巴赫猜想
    #include<stdio.h>//哥德巴赫猜想是指任一大于2的偶数都可写成两个素数之和,请输入任何一个大于2的偶数,将其分解为两个素数之和并输出,//输出格式如下:如输入8,则输出:8=3+5......
  • 2023牛客寒假基础训练营3 I(哥德巴赫猜想)
    I.灵魂碎片的收集题目大意:定义S(n)表示为所有小于n的约数之和。例如S(10)=1+2+5=8现在给定一个数x,求是否有一个n满足S(n)=x。(题目保证如果x为偶数,那么x-......
  • C语言:哥德巴赫猜想例子
      #include<stdio.h>intzs(intn){inta;for(a=2;a<n;a++)if(n%a==0)return0;return1;}main(){inta,b,c=0;scanf("%d",&a......
  • 验证哥德巴赫猜想
    验证哥德巴赫猜想大家都知道一点吧。我们现在不是想证明这个结论,而是对于任给的一个不小于6的偶数,来寻找和等于该偶数的所有素数对。做好了这件实事,就能说明这个猜想是成......