C语言练习题-C语言练习题实例84
题目:判断一个偶数是否可以表示为两个素数之和,并输出分解的结果。
程序分析:我们需要判断给定的偶数是否可以表示为两个素数之和。首先,我们输入一个偶数,然后遍历从1到该偶数之间的所有数,判断这两个数是否都是素数,如果是,则输出结果。我们可以定义一个函数来判断一个数是否为素数,然后在主函数中进行调用。
实例
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
int IsPrime(unsigned int n);
int main() {
unsigned int n, i;
do {
printf("请输入一个偶数:\n");
scanf("%d", &n);
} while (n % 2 != 0);
for (i = 1; i < n; i++) {
if (IsPrime(i) && IsPrime(n - i))
break;
}
printf("偶数 %d 可以分解成 %d 和 %d 两个素数的和\n", n, i, n - i);
return 0;
}
int IsPrime(unsigned int n) {
int i;
if (n < 4)
return 1;
else if (n % 2 == 0)
return 0;
else {
for (i = 3; i <= sqrt(n); i++) {
if (n % i == 0)
return 0;
}
return 1;
}
}
以上程序运行输出结果为:
请输入一个偶数:
4
偶数 4 可以分解成 1 和 3 两个素数的和
通过此程序,我们可以输入一个偶数,并判断是否可以表示为两个素数之和。如果可以,则输出分解的结果。在上述示例中,输入偶数 4,输出结果为 4 可以分解成 1 和 3 两个素数的和。