luogu P1304 哥德巴赫猜想

题目描述

输入N(N<=10000),验证4~N所有偶数是否符合哥德巴赫猜想。

(N为偶数)。

如果一个数,例如10,则输出第一个加数相比其他解法最小的方案。如10=3+7=5+5,则10=5+5是错误答案。

输入输出格式

输入格式:

第一行N

输出格式:

4=2+2 6=3+3 …… N=x+y

输入输出样例

输入样例#1:

10

输出样例#1:

4=2+2
6=3+3
8=3+5
10=3+7枚举
#include<cstdio>
#include<cmath>
using namespace std;
int n;
bool a[10006];
int num_prime=0, prime[10006];
void init()
{
    scanf("%d",&n);
    a[0]=a[1]=1;
    for(int i=2;i<=n;i++)
    {
        if(!a[i])
            prime[num_prime++]=i;
        for(int j=0;j<num_prime&&i*prime[j]<=n;j++)
        {
            a[i*prime[j]]=1;
            if(!(i%prime[j]))
                break;
        }
    }
}
void solve(int x)
{
    int i=0;
    while(prime[i]<x)
    {
        int tmp=x-prime[i];
        if(!a[tmp])
        {
            printf("%d=%d+%d\n",x,prime[i],tmp);
            return;
        }
        i++;
    }
}
int main()
{
    init();
    for(int i=4;i<=n;i+=2)
    {
        solve(i);
    }
    return 0;
}
时间: 2024-10-06 08:12:54

luogu P1304 哥德巴赫猜想的相关文章

P1304 哥德巴赫猜想

题目描述 输入N(N<=10000),验证4~N所有偶数是否符合哥德巴赫猜想. (N为偶数). 如果一个数,例如10,则输出第一个加数相比其他解法最小的方案.如10=3+7=5+5,则10=5+5是错误答案. 输入输出格式 输入格式: 第一行N 输出格式: 4=2+2 6=3+3 …… N=x+y 输入输出样例 输入样例#1: 10 输出样例#1: 4=2+2 6=3+3 8=3+5 10=3+7 先筛一边素数,然后暴力枚举就好 1 #include<iostream> 2 #inclu

luogu P1579 哥德巴赫猜想(升级版)

题目描述 一个等差数列是一个能表示成a, a+b, a+2b,..., a+nb (n=0,1,2,3,...)的数列. 在这个问题中a是一个非负的整数,b是正整数.写一个程序来找出在双平方数集合(双平方数集合是所有能表示成p的平方 + q的平方的数的集合,其中p和q为非负整数)S中长度为n的等差数列. 输入输出格式 输入格式: 第一行: N(3<= N<=25),要找的等差数列的长度. 第二行: M(1<= M<=250),搜索双平方数的上界0 <= p,q <= M

洛谷 P1579 哥德巴赫猜想(升级版)【筛素数/技巧性枚举/易错】

[链接]:https://www.luogu.org/problemnew/show/P1579 题目背景 1742年6月7日哥德巴赫写信给当时的大数学家欧拉,正式提出了以下的猜想:任何一个大于9的奇数都可以表示成3个质数之和.质数是指除了1和本身之外没有其他约数的数,如2和11都是质数,而6不是质数,因为6除了约数1和6之外还有约数2和3.需要特别说明的是1不是质数. 这就是哥德巴赫猜想.欧拉在回信中说,他相信这个猜想是正确的,但他不能证明. 从此,这道数学难题引起了几乎所有数学家的注意.哥德

哥德巴赫猜想(升级版)

题目背景 1742年6月7日哥德巴赫写信给当时的大数学家欧拉,正式提出了以下的猜想:任何一个大于9的奇数都可以表示成3个质数之和.质数是指除了1和本身之外没有其他约数的数,如2和11都是质数,而6不是质数,因为6除了约数1和6之外还有约数2和3.需要特别说明的是1不是质数. 这就是哥德巴赫猜想.欧拉在回信中说,他相信这个猜想是正确的,但他不能证明. 从此,这道数学难题引起了几乎所有数学家的注意.哥德巴赫猜想由此成为数学皇冠上一颗可望不可及的"明珠". 题目描述 现在请你编一个程序验证哥

循环-04. 验证“哥德巴赫猜想”

循环-04. 验证“哥德巴赫猜想”(20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 徐镜春(浙江大学) 数学领域著名的“哥德巴赫猜想”的大致意思是:任何一个大于2的偶数总能表示为两个素数之和.比如:24=5+19,其中5和19都是素数.本实验的任务是设计一个程序,验证20亿以内的偶数都可以分解成两个素数之和. 输入格式: 输入在一行中给出一个(2, 2 000 000 000]范围内的偶数N. 输出格式: 在一行中按照格式

Python验证哥德巴赫猜想

今天看到百度知道有人问如何验证1000以内的数符合哥德巴赫猜想,就写了一个 感觉超过10000时有点慢啊,和java比起来效率差了点,希望高手能给优化下 #!/usr/bin/env python __author__ = '淮南霏霏' """ 脚本编写环境python 3.4.2 哥德巴赫猜想 简单验证 """ import math class Goldbach: """ 哥德巴赫猜想:任一大于2的偶数都可写成两

Codeforces Round #324 (Div. 2) D. Dima and Lisa (哥德巴赫猜想 + 暴力)

D. Dima and Lisa Dima loves representing an odd number as the sum of multiple primes, and Lisa loves it when there are at most three primes. Help them to represent the given number as the sum of at most than three primes. More formally, you are given

验证哥德巴赫猜想,每个大于等于4的偶数都可以表示成2个素数之和

验证哥德巴赫猜想,每个大于等于4的偶数都可以表示成2个素数之和. 1 #define _CRT_SECURE_NO_WARNINGS 2 3 #include<stdio.h> 4 #include<stdlib.h> 5 6 int isou(int num)//1代表偶数,0代表奇数 7 { 8 if (num % 2 == 0) 9 { 10 return 1; 11 } 12 else 13 { 14 return 0; 15 } 16 } 17 18 int sushu(

Goldbach&#39;s Conjecture(哥德巴赫猜想)

Goldbach's Conjecture Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 5277    Accepted Submission(s): 2022点我 Problem Description Goldbach's Conjecture: For any even number n greater than or equa