欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

浙大版《C语言程序设计(第3版)》题目集 习题6-5 使用函数验证哥德巴赫猜想 (20分)

程序员文章站 2022-06-08 18:06:32
...

浙大版《C语言程序设计(第3版)》题目集 习题6-5 使用函数验证哥德巴赫猜想 (20分)

#include <stdio.h>
#include <math.h>
int prime(int p);
void Goldbach(int n);
int main()
{
    int m, n, i, cnt;

    scanf("%d %d", &m, &n);
    if (prime(m) != 0)
        printf("%d is a prime number\n", m);
    if (m < 6)
        m = 6;
    if (m % 2)
        m++;
    cnt = 0;
    for (i = m; i <= n; i += 2)
    {
        Goldbach(i);
        cnt++;
        if (cnt % 5)
            printf(", ");
        else
            printf("\n");
    }

    return 0;
}
int prime(int p)
{
    int i, n, isPrime;
    if (p == 1)
        isPrime = 0;
    else
    {
        isPrime = 1;
        n = sqrt(p);
        for (i = 2; i <= n; i++)
        {
            if (p % i == 0)
            {
                isPrime = 0;
                break;
            }
        }
    }
    return isPrime;
}
void Goldbach(int n)
{
    int i, j, flag = 0;
    for (i = 3; i < n; i++)
    {
        if (prime(i))
            for (j = 3; j < n; j++)
            {
                if (prime(j) && n == i + j)
                {
                    printf("%d=%d+%d", n, i, j);
                    flag = 1;
                }
            }
        if (flag == 1)
            break;
    }
}