POJ2262 ZOJ1951 UVa543 Goldbach's Conjecture

问题链接:POJ2262 ZOJ1951 UVa543 Goldbach‘s Conjecture。基础训练级的题,用C语言编写程序。

这个问题是验证哥德巴赫猜想,对于输入的n,找出一对差值最大的奇素数。

使用穷举法来解决这个问题。

目前POJ使用的C语言编译器,似乎比较古老,在别处可以编译通过的代码,在它这里编译错误。

AC的C语言程序如下:

/* POJ2262 ZOJ1951 UVa543 Goldbach's Conjecture */

#include <stdio.h>
#include <math.h>

#define MAXN 1000000

// 试除法判断一个数是否为素数
int isprime(int n)
{
    int end2, i;

    if(n == 3)
        return 1;

    end2 = sqrt(n);
    for(i=3; i<=end2; i+=2) {
        if(n % i == 0)
            break;
    }

    return i > end2 ? 1 : 0;
}

int main(void)
{
    int n;
    int okflag, i;

    while(scanf("%d", &n) != EOF) {
        // 判定结束条件
        if(n == 0)
            break;

        // 寻找素数
        okflag = 0;
        for(i=3; i<=n/2; i+=2)
            if(isprime(i) && isprime(n-i)) {
                okflag = 1;
                break;
            }

        // 输出结果
        if(okflag)
            printf("%d = %d + %d\n", n, i, n-i);
        else
            printf("Goldbach's conjecture is wrong.\n");
    }

    return 0;
}

POJ中,编译错误的代码(第10行):

// 试除法判断一个数是否为素数
int isprime(int n)
{
    if((n & 1) == 0)  // 偶数:n % 2 == 0
        return 0;  

    if(n == 3)
        return 1;  

    int end = sqrt(n), i;
    for(i=3; i<=end; i+=2) {
        if(n % i == 0)
            break;
    }  

    return i > end ? 1 : 0;
}  

POJ2262 ZOJ1951 UVa543 Goldbach's Conjecture

时间: 2024-10-13 00:31:24

POJ2262 ZOJ1951 UVa543 Goldbach's Conjecture的相关文章

[POJ2262] Goldbach’s Conjecture

Goldbach's Conjecture Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 48161   Accepted: 18300 Description In 1742, Christian Goldbach, a German amateur mathematician, sent a letter to Leonhard Euler in which he made the following conject

poj 2262 Goldbach&#39;s Conjecture

Goldbach's Conjecture Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 39353   Accepted: 15077 Description In 1742, Christian Goldbach, a German amateur mathematician, sent a letter to Leonhard Euler in which he made the following conject

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

POJ 2262 Goldbach&#39;s Conjecture (素数判断)

Goldbach's Conjecture Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 37693   Accepted: 14484 Description In 1742, Christian Goldbach, a German amateur mathematician, sent a letter to Leonhard Euler in which he made the following conject

题目1440:Goldbach&#39;s Conjecture

题目1440:Goldbach's Conjecture 时间限制:1 秒 内存限制:128 兆 特殊判题:否 题目描述: Goldbach's Conjecture: For any even number n greater than or equal to 4, there exists at least one pair of prime numbers p1 and p2 such that n = p1 + p2. This conjecture has not been prove

POJ 2262 Goldbach&#39;s Conjecture (求解素数的一般筛和线性筛)

Goldbach's Conjecture Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 40944   Accepted: 15664 Description In 1742, Christian Goldbach, a German amateur mathematician, sent a letter to Leonhard Euler in which he made the following conject

POJ 2262 Goldbach&#39;s Conjecture 数学常识 难度:0

题目链接:http://poj.org/problem?id=2262 哥德巴赫猜想肯定是正确的 思路: 筛出n范围内的所有奇质数,对每组数据试过一遍即可, 为满足b-a取最大,a取最小 时空复杂度分析: 在1e6内约有8e4个奇质数,因为a <= b,时间复杂度在T*4e4+1e6等级.一般T为1e3,足以承受 空间复杂度为1e6,足以承受 1 #include <cstdio> 2 #include <cstring> 3 #include <algorithm&g

Poj 2262 / OpenJudge 2262 Goldbach&#39;s Conjecture

1.Link: http://poj.org/problem?id=2262 http://bailian.openjudge.cn/practice/2262 2.Content: Goldbach's Conjecture Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 37791   Accepted: 14536 Description In 1742, Christian Goldbach, a German a

UVA, 543 Goldbach&#39;s Conjecture

题意:给你一个数,认为它能拆成两个素数之和的形式,能,则输出x = a + b ,不能则输出 "Goldbach's conjecture is wrong." 思路:打印素数表,x-prime[a]检查是否为素数 代码: 1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 using namespace std; 5 6 #define MAXN 1000001 7 #d