用c语音编写函数IsPrime,判断整数n是否为素数; 验证“歌德巴郝猜想:任意一个大于等于4的偶数可写成两个素数之和”。
时间: 2024-02-03 15:15:51 浏览: 95
以下是用C语言编写的判断整数n是否为素数的函数IsPrime:
```c
#include <stdio.h>
int IsPrime(int n) {
if (n <= 1) {
return 0;
}
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) {
return 0;
}
}
return 1;
}
```
这个函数的实现是通过试除法,即从2到sqrt(n)逐个除以n来判断是否为素数。如果n能被某个数整除,那么n就不是素数。
接下来验证歌德巴赫猜想,即任意一个大于等于4的偶数都可以表示成两个素数之和。
```c
#include <stdio.h>
int IsPrime(int n) {
if (n <= 1) {
return 0;
}
for (int i = 2; i * i <= n; i++) {
if (n % i == 0) {
return 0;
}
}
return 1;
}
int main() {
int n = 4;
while (n <= 100) {
printf("%d = ", n);
int flag = 0;
for (int i = 2; i <= n / 2; i++) {
if (IsPrime(i) && IsPrime(n - i)) {
printf("%d + %d\n", i, n - i);
flag = 1;
break;
}
}
if (!flag) {
printf("No Solution!\n");
}
n += 2;
}
return 0;
}
```
这个程序会从4开始,逐个验证4到100之间的偶数是否满足歌德巴赫猜想。对于每个偶数n,它会从2到n/2逐个判断i和n-i是否都是素数,如果都是素数,则找到了一个解。否则,就输出“No Solution!”表示无解。
阅读全文