一个C语言编程应用举例

输入一个 4 - 1000 之间的偶数 n, 将其分解成两个素数之和。要求写出所有拆解可能,但不要把两个素数换位置的也打印出来。若有多个拆解可能,要求按照第一个加数由小到大的顺序依次输出

把这个问题分为两步,首先得到<=该偶数的所有素数,然后产生两个素数,判断其和是否满足=偶数。

#include<stdio.h>
#include<math.h> //用到开方函数
int prime(int m)//该函数判断m是否为素数,取一标志位,如果是则返回0,
{
int i,flag=1;
for(i=2;i<=sqrt(m)&&flag==1;i++)
if(m%i==0)flag=0;
return flag;
}
void main()
{
int n,j,k;
printf("Please enter number:");
scanf("%d",&n); //输入该偶数
for(i=2;i<=n-2;i++) //素数是大于1的自然数
if(prime(i)&&prime(n-i)) //如果两个数都是素数且和等于n,则输出
printf("%d=%d+%d\n",m,i,m-i);
}

只能做到这样,目前,这个互换位置的也会输出🙈
有帮助的话采纳一下哦!

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^