编写一个判断正整数7是否是素数的函数prime(),使用这个函数验证哥德巴
赫猜想(任何一个大于4的偶数m都能表示为两个奇素数之和),m由键盘输入。
#include <stdio.h>
#include <math.h>
int prime(int n) {
if (n <= 1) {
return 0;
}
for (int i = 2; i <= sqrt(n); i++) {
if (n % i == 0) {
return 0;
}
}
return 1;
}
int main() {
int m, i;
printf("大于4的偶数m: ");
scanf("%d", &m);
i = 3;
while (i <= m / 2) {
if (prime(i) && prime(m-i)) {
printf("%d + %d = %d\n", i, m-i, m);
}
i += 2;
}
return 0;
}
下面是C语言的代码实现,其中prime()函数用于判断正整数是否为素数:
#include <stdio.h>
int prime(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 m, a, b;
printf("请输入一个大于4的偶数m:");
scanf("%d", &m);
for (a = 3; a <= m / 2; a += 2) {
b = m - a;
if (prime(a) && prime(b)) {
printf("%d = %d + %d\n", m, a, b);
}
}
return 0;
}
不知道你这个问题是否已经解决, 如果还没有解决的话:解决方案如下(采用C语言):
//判断是否为素数的函数 int isPrime(int num){ if(num == 2) return 1; //2是素数 if(num <= 1 || num % 2 == 0) return 0; //小于等于1和偶数都不是素数 for(int i = 3; i*i <= num; i += 2){ //只要判断到num的平方根就可以了 if(num % i == 0) return 0; //能整除说明不是素数 } return 1; }
int main(){ int m, i; scanf("%d", &m); if(m % 2 == 0 && m > 4){ //确保m是一个大于4的偶数 for(i = 3; i <= m/2; i += 2){ //从3开始遍历奇数 if(isPrime(i) && isPrime(m-i)){ //如果i和m-i都是素数,那就符合哥德巴赫猜想 printf("%d = %d + %d\n", m, i, m-i); //输出i和m-i的值 break; } } if(i == m/2 + 1){ //没有符合要求的i和m-i printf("哥德巴赫猜想错误!\n"); } }else{ printf("请输入一个大于4的偶数!\n"); } return 0; }