问题描述
编写一个函数output使其满足输入一个偶数返回两个素数使其之和为这个偶数

#include <stdio.h>
int output(int num, int* a, int* b);
int main()
{
int num;
int a = 0;
int b = 0;
scanf_s("%d", &num);
if (output(num, &a, &b)==1)
printf("%d + %d= %d", a, b, num);
else
printf("拆不成");
return 0;
}
int output(int num,int *a , int *b)
{
int x, y;
if (num % 2 != 0) {
printf("输入错误这不是偶数");
return 0;
}
else
{
x = 2;
y = num / 2; //两者必定位于中点两端
int flag = 0;// 控制按钮
for (x = 2; x < num / 2; x++)
{
for (y = num / 2; y < num; y++)
{
if (checkprime(x) && checkprime(y)) {
if (x + y == num)
{
*a = x;
*b = y;
flag = 1;
}
}
}
}
if (flag == 0)
{
return 0;
}
else if(flag != 0)
{
return 1;
}
}
}
int checkprime(int num)
{
if (num == 2)
return 1;
for (int i = 2; i < num; i++)
{
if (num % i == 0)//除尽了,不是素数
return 0;
}
return 1;
}
难点分析
这两个素数必须是在这个偶数的中点两侧
该程序设计了一个函数output,输入一个偶数,返回两个素数,它们的和等于输入的偶数。程序首先检查输入是否为偶数,然后通过两个嵌套循环在偶数的中点两侧寻找素数对。如果找到,就返回这两个素数;否则,返回错误信息。此外,还定义了一个辅助函数checkprime用于检查一个数是否为素数。

1086

被折叠的 条评论
为什么被折叠?



