编写一个判断m是否为质数的函数,验证歌德巴赫猜想:任何大于2的偶数均可表示为两个质数之和。 编写主函数,输入一个偶数,输出所有满足条件的两个质数。
时间: 2024-02-16 12:00:44 浏览: 64
下面是判断一个数是否为质数的函数:
```c
#include <math.h>
// 判断一个数是否为质数
int is_prime(int n) {
if (n <= 1) {
return 0;
}
int sqr = (int)sqrt(n);
for (int i = 2; i <= sqr; i++) {
if (n % i == 0) {
return 0;
}
}
return 1;
}
```
然后我们可以编写主函数,实现歌德巴赫猜想的验证:
```c
#include <stdio.h>
int is_prime(int n);
int main() {
int n;
printf("请输入一个偶数:");
scanf("%d", &n);
if (n <= 2 || n % 2 != 0) {
printf("输入错误,必须输入一个大于2的偶数\n");
return 1;
}
for (int i = 2; i <= n / 2; i++) {
if (is_prime(i) && is_prime(n - i)) {
printf("%d = %d + %d\n", n, i, n - i);
}
}
return 0;
}
```
在主函数中,先输入一个偶数,然后判断输入是否合法,如果合法则使用循环遍历所有可能的质数,判断两个质数之和是否等于输入的偶数,如果是则输出这两个质数。
注意:由于歌德巴赫猜想并没有被证明,所以这个程序只是验证了猜想在一定程度上是正确的,但并不能证明猜想的正确性。
阅读全文