浙大版《C语言程序设计(第3版)》题目集 习题6-5 使用函数验证哥德巴赫猜想 (20分)
程序员文章站
2022-06-08 18:06:32
...
#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;
}
}